diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/build.js | 21 | ||||
-rw-r--r-- | scripts/watch.js | 43 |
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 | ||
20 | function buildAll() { | 20 | function 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'; | |||
11 | process.env.NODE_ENV = 'development'; | 11 | process.env.NODE_ENV = 'development'; |
12 | 12 | ||
13 | /** @type {string} */ | 13 | /** @type {string} */ |
14 | const sharedPackageSource = packageSource('shared'); | 14 | const sharedModule = join(__dirname, '../packages/shared/dist/index.mjs'); |
15 | 15 | ||
16 | /** @type {string} */ | 16 | /** @type {string} */ |
17 | const serviceSharedPackageSource = packageSource('service-shared'); | 17 | const serviceSharedModule = join(__dirname, '../packages/service-shared/dist/index.mjs'); |
18 | 18 | ||
19 | /** @type {RegExp[]} */ | 19 | /** @type {RegExp[]} */ |
20 | const stderrIgnorePatterns = [ | 20 | const stderrIgnorePatterns = [ |
@@ -29,14 +29,6 @@ const stderrIgnorePatterns = [ | |||
29 | 29 | ||
30 | /** | 30 | /** |
31 | * @param {string} packageName | 31 | * @param {string} packageName |
32 | * @returns {string} | ||
33 | */ | ||
34 | function 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 | */ |
102 | function setupPreloadPackageWatcher(sendEvent) { | 94 | function 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 | */ |
115 | function setupServicePackageWatcher(packageName, sendEvent) { | 107 | function 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 | } |