-
Notifications
You must be signed in to change notification settings - Fork 0
/
watch.mjs
28 lines (21 loc) · 940 Bytes
/
watch.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
import chalk from 'chalk';
import fs from 'fs';
import path from 'path';
import { exec } from 'node:child_process';
import * as url from 'url';
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
const watches = ['options', 'background', 'popup'];
const setupListeners = (proc) => {
proc.stdout.on('data', (data) => console.log(chalk.blue(data.replace('\n', ''))));
proc.stderr.on('data', (data) => console.error(chalk.red(data.replace('\n', ''))));
proc.stdout.on('end', () => console.log(chalk.bgGreen('Done.')));
};
watches.forEach(watch => {
fs.watch(path.join(__dirname, `src-${watch}`), { recursive: true }, () => {
setupListeners(exec(`yarn build:${watch}`));
});
});
const buildAll = () => setupListeners(exec('yarn build'));
fs.watch(path.join(__dirname, 'src-common'), { recursive: true }, buildAll);
fs.watch(path.join(__dirname, 'src-common-ui'), { recursive: true }, buildAll);
buildAll();