aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/build.js21
-rw-r--r--scripts/watch.js43
2 files changed, 35 insertions, 29 deletions
diff --git a/scripts/build.js b/scripts/build.js
index 416530d..5abcdab 100644
--- a/scripts/build.js
+++ b/scripts/build.js
@@ -18,16 +18,21 @@ function buildPackageVite(packageName) {
18} 18}
19 19
20function buildAll() { 20function buildAll() {
21 // Esbuild can natively load a typescript main file, 21 const buildServiceShared = buildPackageEsbuild('service-shared');
22 // so we don't need to bundle `service-shared`.
23 // We onyl bundle `shared` for vite.
24 const buildShared = buildPackageEsbuild('shared'); 22 const buildShared = buildPackageEsbuild('shared');
25 return Promise.all([ 23 return Promise.all([
26 buildShared.then(() => buildPackageEsbuild('main')), 24 Promise.all([
27 buildPackageEsbuild('service-inject'), 25 buildServiceShared,
28 buildPackageEsbuild('service-preload'), 26 buildShared,
29 buildPackageEsbuild('preload'), 27 ]).then(() => buildPackageEsbuild('main')),
30 buildPackageVite('renderer'), 28 buildServiceShared.then(() => Promise.all([
29 buildPackageEsbuild('service-inject'),
30 buildPackageEsbuild('service-preload'),
31 ])),
32 buildShared.then(() => Promise.all([
33 buildPackageEsbuild('preload'),
34 buildPackageVite('renderer'),
35 ])),
31 ]); 36 ]);
32} 37}
33 38
diff --git a/scripts/watch.js b/scripts/watch.js
index 367ab88..d4229e9 100644
--- a/scripts/watch.js
+++ b/scripts/watch.js
@@ -11,10 +11,10 @@ process.env.MODE = 'development';
11process.env.NODE_ENV = 'development'; 11process.env.NODE_ENV = 'development';
12 12
13/** @type {string} */ 13/** @type {string} */
14const sharedPackageSource = packageSource('shared'); 14const sharedModule = join(__dirname, '../packages/shared/dist/index.mjs');
15 15
16/** @type {string} */ 16/** @type {string} */
17const serviceSharedPackageSource = packageSource('service-shared'); 17const serviceSharedModule = join(__dirname, '../packages/service-shared/dist/index.mjs');
18 18
19/** @type {RegExp[]} */ 19/** @type {RegExp[]} */
20const stderrIgnorePatterns = [ 20const stderrIgnorePatterns = [
@@ -29,14 +29,6 @@ const stderrIgnorePatterns = [
29 29
30/** 30/**
31 * @param {string} packageName 31 * @param {string} packageName
32 * @returns {string}
33 */
34function packageSource(packageName) {
35 return join(__dirname, `../packages/${packageName}/src`);
36}
37
38/**
39 * @param {string} packageName
40 * @param {string[]} [extraPaths] 32 * @param {string[]} [extraPaths]
41 * @param {() => void} [callback] 33 * @param {() => void} [callback]
42 * @return {Promise<void>} 34 * @return {Promise<void>}
@@ -47,7 +39,7 @@ async function setupEsbuildWatcher(packageName, extraPaths, callback) {
47 config.incremental = true; 39 config.incremental = true;
48 const incrementalBuild = await esbuild.build(config); 40 const incrementalBuild = await esbuild.build(config);
49 const paths = [ 41 const paths = [
50 packageSource(packageName), 42 join(__dirname, `../packages/${packageName}/src`),
51 ...(extraPaths || []), 43 ...(extraPaths || []),
52 ]; 44 ];
53 const watcher = chokidar.watch(paths, { 45 const watcher = chokidar.watch(paths, {
@@ -60,8 +52,8 @@ async function setupEsbuildWatcher(packageName, extraPaths, callback) {
60 } 52 }
61 watcher.on('change', () => { 53 watcher.on('change', () => {
62 incrementalBuild.rebuild().then(() => { 54 incrementalBuild.rebuild().then(() => {
63 console.log(`\u26a1 Reloading package ${packageName}`);
64 if (callback) { 55 if (callback) {
56 console.log(`\u26a1 Reloading package ${packageName}`);
65 callback(); 57 callback();
66 } 58 }
67 }).catch((err) => { 59 }).catch((err) => {
@@ -100,7 +92,7 @@ async function setupDevServer(packageName) {
100 * @return {Promise<void>} 92 * @return {Promise<void>}
101 */ 93 */
102function setupPreloadPackageWatcher(sendEvent) { 94function setupPreloadPackageWatcher(sendEvent) {
103 return setupEsbuildWatcher('preload', [sharedPackageSource], () => { 95 return setupEsbuildWatcher('preload', [sharedModule], () => {
104 sendEvent({ 96 sendEvent({
105 type: 'full-reload', 97 type: 'full-reload',
106 }); 98 });
@@ -113,7 +105,7 @@ function setupPreloadPackageWatcher(sendEvent) {
113 * @return {Promise<void>} 105 * @return {Promise<void>}
114 */ 106 */
115function setupServicePackageWatcher(packageName, sendEvent) { 107function setupServicePackageWatcher(packageName, sendEvent) {
116 return setupEsbuildWatcher(packageName, [serviceSharedPackageSource], () => { 108 return setupEsbuildWatcher(packageName, [serviceSharedModule], () => {
117 sendEvent({ 109 sendEvent({
118 type: 'custom', 110 type: 'custom',
119 event: 'sophie:reload-services', 111 event: 'sophie:reload-services',
@@ -139,8 +131,8 @@ function setupMainPackageWatcher(viteDevServer) {
139 return setupEsbuildWatcher( 131 return setupEsbuildWatcher(
140 'main', 132 'main',
141 [ 133 [
142 serviceSharedPackageSource, 134 serviceSharedModule,
143 sharedPackageSource 135 sharedModule,
144 ], 136 ],
145 () => { 137 () => {
146 if (spawnProcess !== null) { 138 if (spawnProcess !== null) {
@@ -174,13 +166,22 @@ async function setupDevEnvironment() {
174 viteDevServer.ws.send(event); 166 viteDevServer.ws.send(event);
175 } 167 }
176 }; 168 };
169
170 const sharedWatcher = setupEsbuildWatcher('shared');
171 const serviceSharedWatcher = setupEsbuildWatcher('service-shared');
177 await Promise.all([ 172 await Promise.all([
178 setupEsbuildWatcher('shared'), 173 sharedWatcher.then(() => Promise.all([
179 setupPreloadPackageWatcher(sendEvent), 174 setupPreloadPackageWatcher(sendEvent),
180 setupServicePackageWatcher('service-inject', sendEvent), 175 setupDevServer('renderer').then((devServer) => {
181 setupServicePackageWatcher('service-preload', sendEvent), 176 viteDevServer = devServer;
177 }),
178 ])),
179 serviceSharedWatcher.then(() => Promise.all([
180 setupServicePackageWatcher('service-inject', sendEvent),
181 setupServicePackageWatcher('service-preload', sendEvent),
182 ])),
182 ]); 183 ]);
183 viteDevServer = await setupDevServer('renderer'); 184
184 console.log('\ud83c\udf80 Sophie is starting up') 185 console.log('\ud83c\udf80 Sophie is starting up')
185 return setupMainPackageWatcher(viteDevServer); 186 return setupMainPackageWatcher(viteDevServer);
186} 187}