-
-
Notifications
You must be signed in to change notification settings - Fork 8
/
build-dev.mjs
43 lines (39 loc) · 1.11 KB
/
build-dev.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import path from 'node:path';
import { copyFileSync, existsSync, readFileSync } from 'fs';
import chokidar from 'chokidar';
const devTargets = path.resolve('./.dev-target.json');
const distDir = path.resolve('./dist');
try {
if (!existsSync(devTargets)) {
console.log(`No ${devTargets} file found. Exiting.`);
process.exit(0);
}
const data = JSON.parse(readFileSync(devTargets, 'utf-8'));
// Initialize watcher.
chokidar.watch(distDir, {
awaitWriteFinish: {
stabilityThreshold: 2000,
pollInterval: 100
}
}).on('change', (f, stats) => {
const key = path.basename(f);
const targets = data[key];
if (stats) {
console.log(`File ${f} changed size to ${stats.size}`);
}
if (targets === undefined) {
return;
} else if (Array.isArray(targets)) {
targets.forEach((t) => {
console.log(`copy ${key} to ${t}`);
copyFileSync(f, path.resolve(t));
})
} else {
console.log(`copy ${key} to ${targets}`);
copyFileSync(f, path.resolve(targets));
}
});
} catch (err) {
console.error(err);
process.exit(1);
}