aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/watch.js
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/watch.js')
-rw-r--r--scripts/watch.js101
1 files changed, 57 insertions, 44 deletions
diff --git a/scripts/watch.js b/scripts/watch.js
index 1345a0f..cf5dbfd 100644
--- a/scripts/watch.js
+++ b/scripts/watch.js
@@ -15,7 +15,10 @@ const thisDir = fileURLToDirname(import.meta.url);
15const sharedModule = join(thisDir, '../packages/shared/dist/index.mjs'); 15const sharedModule = join(thisDir, '../packages/shared/dist/index.mjs');
16 16
17/** @type {string} */ 17/** @type {string} */
18const serviceSharedModule = join(thisDir, '../packages/service-shared/dist/index.mjs'); 18const serviceSharedModule = join(
19 thisDir,
20 '../packages/service-shared/dist/index.mjs',
21);
19 22
20/** @type {RegExp[]} */ 23/** @type {RegExp[]} */
21const stderrIgnorePatterns = [ 24const stderrIgnorePatterns = [
@@ -37,7 +40,9 @@ const stderrIgnorePatterns = [
37async function setupEsbuildWatcher(packageName, extraPaths, callback) { 40async function setupEsbuildWatcher(packageName, extraPaths, callback) {
38 /** @type {{ default: import('esbuild').BuildOptions }} */ 41 /** @type {{ default: import('esbuild').BuildOptions }} */
39 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Read untyped config file. 42 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Read untyped config file.
40 const { default: config } = await import(`../packages/${packageName}/esbuild.config.js`); 43 const { default: config } = await import(
44 `../packages/${packageName}/esbuild.config.js`
45 );
41 config.logLevel = 'info'; 46 config.logLevel = 'info';
42 config.incremental = true; 47 config.incremental = true;
43 48
@@ -55,34 +60,37 @@ async function setupEsbuildWatcher(packageName, extraPaths, callback) {
55 callback(); 60 callback();
56 } 61 }
57 watcher.on('change', () => { 62 watcher.on('change', () => {
58 incrementalBuild.rebuild?.().then(() => { 63 incrementalBuild
59 if (callback) { 64 .rebuild?.()
60 console.log(`\u26a1 Reloading package ${packageName}`); 65 .then(() => {
61 callback(); 66 if (callback) {
62 } 67 console.log(`\u26a1 Reloading package ${packageName}`);
63 }).catch((err) => { 68 callback();
64 if (typeof err === 'object' && 'errors' in err) {
65 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- We just checked.
66 const { errors } = err;
67 if (Array.isArray(errors)) {
68 const errCount = errors.length;
69 console.error(
70 '\ud83d\udd25',
71 errCount,
72 errCount > 1 ? 'errors' : 'error',
73 'while rebuilding package',
74 packageName,
75 );
76 return;
77 } 69 }
78 } 70 })
79 console.error( 71 .catch((err) => {
80 '\ud83d\udd25', 72 if (typeof err === 'object' && 'errors' in err) {
81 'error while rebuilding package', 73 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- We just checked.
82 packageName, 74 const { errors } = err;
83 err, 75 if (Array.isArray(errors)) {
84 ); 76 const errCount = errors.length;
85 }); 77 console.error(
78 '\ud83d\udd25',
79 errCount,
80 errCount > 1 ? 'errors' : 'error',
81 'while rebuilding package',
82 packageName,
83 );
84 return;
85 }
86 }
87 console.error(
88 '\ud83d\udd25',
89 'error while rebuilding package',
90 packageName,
91 err,
92 );
93 });
86 }); 94 });
87} 95}
88 96
@@ -136,7 +144,11 @@ function setupServicePackageWatcher(packageName, sendEvent) {
136 */ 144 */
137function setupMainPackageWatcher(viteDevServer) { 145function setupMainPackageWatcher(viteDevServer) {
138 // Write a value to an environment variable to pass it to the main process. 146 // Write a value to an environment variable to pass it to the main process.
139 const { config: { server: { port, https, host } } } = viteDevServer; 147 const {
148 config: {
149 server: { port, https, host },
150 },
151 } = viteDevServer;
140 const protocol = `http${https ? 's' : ''}:`; 152 const protocol = `http${https ? 's' : ''}:`;
141 const hostOrDefault = typeof host === 'string' ? host : 'localhost'; 153 const hostOrDefault = typeof host === 'string' ? host : 'localhost';
142 const portOrDefault = port || 3000; 154 const portOrDefault = port || 3000;
@@ -148,10 +160,7 @@ function setupMainPackageWatcher(viteDevServer) {
148 160
149 return setupEsbuildWatcher( 161 return setupEsbuildWatcher(
150 'main', 162 'main',
151 [ 163 [serviceSharedModule, sharedModule],
152 serviceSharedModule,
153 sharedModule,
154 ],
155 () => { 164 () => {
156 if (spawnProcess !== null) { 165 if (spawnProcess !== null) {
157 spawnProcess.kill('SIGINT'); 166 spawnProcess.kill('SIGINT');
@@ -191,16 +200,20 @@ async function setupDevEnvironment() {
191 const sharedWatcher = setupEsbuildWatcher('shared'); 200 const sharedWatcher = setupEsbuildWatcher('shared');
192 const serviceSharedWatcher = setupEsbuildWatcher('service-shared'); 201 const serviceSharedWatcher = setupEsbuildWatcher('service-shared');
193 await Promise.all([ 202 await Promise.all([
194 sharedWatcher.then(() => Promise.all([ 203 sharedWatcher.then(() =>
195 setupPreloadPackageWatcher(sendEvent), 204 Promise.all([
196 setupDevServer('renderer').then((devServer) => { 205 setupPreloadPackageWatcher(sendEvent),
197 viteDevServer = devServer; 206 setupDevServer('renderer').then((devServer) => {
198 }), 207 viteDevServer = devServer;
199 ])), 208 }),
200 serviceSharedWatcher.then(() => Promise.all([ 209 ]),
201 setupServicePackageWatcher('service-inject', sendEvent), 210 ),
202 setupServicePackageWatcher('service-preload', sendEvent), 211 serviceSharedWatcher.then(() =>
203 ])), 212 Promise.all([
213 setupServicePackageWatcher('service-inject', sendEvent),
214 setupServicePackageWatcher('service-preload', sendEvent),
215 ]),
216 ),
204 ]); 217 ]);
205 218
206 if (viteDevServer === null) { 219 if (viteDevServer === null) {