diff options
author | Kristóf Marussy <kristof@marussy.com> | 2022-01-09 20:33:53 +0100 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2022-01-09 20:33:53 +0100 |
commit | d85f09cbed5f3d2501f791e689011ae127df1cbb (patch) | |
tree | 0ed5be55dd5d3dec1d51eb60e7ff229274030a57 /scripts | |
parent | build: Disable single-run eslint-typescript (diff) | |
download | sophie-d85f09cbed5f3d2501f791e689011ae127df1cbb.tar.gz sophie-d85f09cbed5f3d2501f791e689011ae127df1cbb.tar.zst sophie-d85f09cbed5f3d2501f791e689011ae127df1cbb.zip |
build: Add prettier
eslint will also enforce prettier rules, so there is no need to call
prettier separately in CI.
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/build.js | 31 | ||||
-rw-r--r-- | scripts/update-electron-vendors.js | 26 | ||||
-rw-r--r-- | scripts/watch.js | 101 |
3 files changed, 92 insertions, 66 deletions
diff --git a/scripts/build.js b/scripts/build.js index 1236a6c..88267e5 100644 --- a/scripts/build.js +++ b/scripts/build.js | |||
@@ -14,7 +14,9 @@ const thisDir = fileURLToDirname(import.meta.url); | |||
14 | async function buildPackageEsbuild(packageName) { | 14 | async function buildPackageEsbuild(packageName) { |
15 | /** @type {{ default: import('esbuild').BuildOptions }} */ | 15 | /** @type {{ default: import('esbuild').BuildOptions }} */ |
16 | // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Read untyped config file. | 16 | // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Read untyped config file. |
17 | const { default: config } = await import(`../packages/${packageName}/esbuild.config.js`); | 17 | const { default: config } = await import( |
18 | `../packages/${packageName}/esbuild.config.js` | ||
19 | ); | ||
18 | return esbuildBuild(config); | 20 | return esbuildBuild(config); |
19 | } | 21 | } |
20 | 22 | ||
@@ -32,18 +34,21 @@ function buildAll() { | |||
32 | const buildServiceShared = buildPackageEsbuild('service-shared'); | 34 | const buildServiceShared = buildPackageEsbuild('service-shared'); |
33 | const buildShared = buildPackageEsbuild('shared'); | 35 | const buildShared = buildPackageEsbuild('shared'); |
34 | return Promise.all([ | 36 | return Promise.all([ |
35 | Promise.all([ | 37 | Promise.all([buildServiceShared, buildShared]).then(() => |
36 | buildServiceShared, | 38 | buildPackageEsbuild('main'), |
37 | buildShared, | 39 | ), |
38 | ]).then(() => buildPackageEsbuild('main')), | 40 | buildServiceShared.then(() => |
39 | buildServiceShared.then(() => Promise.all([ | 41 | Promise.all([ |
40 | buildPackageEsbuild('service-inject'), | 42 | buildPackageEsbuild('service-inject'), |
41 | buildPackageEsbuild('service-preload'), | 43 | buildPackageEsbuild('service-preload'), |
42 | ])), | 44 | ]), |
43 | buildShared.then(() => Promise.all([ | 45 | ), |
44 | buildPackageEsbuild('preload'), | 46 | buildShared.then(() => |
45 | buildPackageVite('renderer'), | 47 | Promise.all([ |
46 | ])), | 48 | buildPackageEsbuild('preload'), |
49 | buildPackageVite('renderer'), | ||
50 | ]), | ||
51 | ), | ||
47 | ]); | 52 | ]); |
48 | } | 53 | } |
49 | 54 | ||
diff --git a/scripts/update-electron-vendors.js b/scripts/update-electron-vendors.js index 91cdb61..6ff5c06 100644 --- a/scripts/update-electron-vendors.js +++ b/scripts/update-electron-vendors.js | |||
@@ -16,10 +16,13 @@ const thisDir = fileURLToDirname(import.meta.url); | |||
16 | * @returns {NodeJS.ProcessVersions} | 16 | * @returns {NodeJS.ProcessVersions} |
17 | */ | 17 | */ |
18 | function getVendors() { | 18 | function getVendors() { |
19 | const output = execSync(`${electronPath.toString()} -p "JSON.stringify(process.versions)"`, { | 19 | const output = execSync( |
20 | env: { ELECTRON_RUN_AS_NODE: '1' }, | 20 | `${electronPath.toString()} -p "JSON.stringify(process.versions)"`, |
21 | encoding: 'utf-8', | 21 | { |
22 | }); | 22 | env: { ELECTRON_RUN_AS_NODE: '1' }, |
23 | encoding: 'utf-8', | ||
24 | }, | ||
25 | ); | ||
23 | 26 | ||
24 | // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- Read untyped output. | 27 | // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- Read untyped output. |
25 | return JSON.parse(output); | 28 | return JSON.parse(output); |
@@ -34,17 +37,22 @@ function updateVendors() { | |||
34 | const electronRelease = getVendors(); | 37 | const electronRelease = getVendors(); |
35 | 38 | ||
36 | const nodeMajorVersion = electronRelease.node.split('.')[0]; | 39 | const nodeMajorVersion = electronRelease.node.split('.')[0]; |
37 | const chromeMajorVersion = electronRelease.v8.split('.')[0] + electronRelease.v8.split('.')[1]; | 40 | const chromeMajorVersion = |
41 | electronRelease.v8.split('.')[0] + electronRelease.v8.split('.')[1]; | ||
38 | 42 | ||
39 | const browserslistrcPath = join(thisDir, '../.browserslistrc'); | 43 | const browserslistrcPath = join(thisDir, '../.browserslistrc'); |
40 | 44 | ||
41 | return Promise.all([ | 45 | return Promise.all([ |
42 | writeFile( | 46 | writeFile( |
43 | join(thisDir, '../.electron-vendors.cache.json'), | 47 | join(thisDir, '../.electron-vendors.cache.json'), |
44 | `${JSON.stringify({ | 48 | `${JSON.stringify( |
45 | chrome: chromeMajorVersion, | 49 | { |
46 | node: nodeMajorVersion, | 50 | chrome: chromeMajorVersion, |
47 | }, null, 2)}\n`, | 51 | node: nodeMajorVersion, |
52 | }, | ||
53 | null, | ||
54 | 2, | ||
55 | )}\n`, | ||
48 | ), | 56 | ), |
49 | 57 | ||
50 | writeFile(browserslistrcPath, `Chrome ${chromeMajorVersion}\n`, 'utf8'), | 58 | writeFile(browserslistrcPath, `Chrome ${chromeMajorVersion}\n`, 'utf8'), |
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); | |||
15 | const sharedModule = join(thisDir, '../packages/shared/dist/index.mjs'); | 15 | const sharedModule = join(thisDir, '../packages/shared/dist/index.mjs'); |
16 | 16 | ||
17 | /** @type {string} */ | 17 | /** @type {string} */ |
18 | const serviceSharedModule = join(thisDir, '../packages/service-shared/dist/index.mjs'); | 18 | const serviceSharedModule = join( |
19 | thisDir, | ||
20 | '../packages/service-shared/dist/index.mjs', | ||
21 | ); | ||
19 | 22 | ||
20 | /** @type {RegExp[]} */ | 23 | /** @type {RegExp[]} */ |
21 | const stderrIgnorePatterns = [ | 24 | const stderrIgnorePatterns = [ |
@@ -37,7 +40,9 @@ const stderrIgnorePatterns = [ | |||
37 | async function setupEsbuildWatcher(packageName, extraPaths, callback) { | 40 | async 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 | */ |
137 | function setupMainPackageWatcher(viteDevServer) { | 145 | function 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) { |