aboutsummaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-30 00:26:01 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-30 02:24:28 +0100
commit61fd13c55f5e69a9d8b32dd0d74b08870783bcce (patch)
tree4f3f97b1629f3c262bea076b596bc7245ccbc0bd /packages
parentRevert "refactor: Switch back to consola for prettyness" (diff)
downloadsophie-61fd13c55f5e69a9d8b32dd0d74b08870783bcce.tar.gz
sophie-61fd13c55f5e69a9d8b32dd0d74b08870783bcce.tar.zst
sophie-61fd13c55f5e69a9d8b32dd0d74b08870783bcce.zip
build: Switch to esbuild
We will build all packages except the frontend (where vite remains in use) with esbuild. For some reason, the @yarnpkg/esbuild-plugin-pnp doesn't allow esbuild to load esm modules and we fall back to commonjs for dependencies. Hence we had to switch back to node_modules (but still rely on yarn hardlinking for a more efficient install).
Diffstat (limited to 'packages')
-rw-r--r--packages/main/esbuild.config.js24
-rw-r--r--packages/main/package.json10
-rw-r--r--packages/main/src/controllers/config.ts2
-rw-r--r--packages/main/src/devTools.ts41
-rw-r--r--packages/main/src/index.ts38
-rw-r--r--packages/main/src/services/ConfigPersistenceService.ts2
-rw-r--r--packages/main/src/utils/logging.ts4
-rw-r--r--packages/main/vite.config.js39
-rw-r--r--packages/preload/esbuild.config.js19
-rw-r--r--packages/preload/package.json4
-rw-r--r--packages/preload/vite.config.js31
-rw-r--r--packages/renderer/package.json7
-rw-r--r--packages/renderer/src/devTools.ts13
-rw-r--r--packages/renderer/vite.config.js48
-rw-r--r--packages/service-inject/esbuild.config.js16
-rw-r--r--packages/service-inject/package.json4
-rw-r--r--packages/service-inject/vite.config.js28
-rw-r--r--packages/service-preload/esbuild.config.js19
-rw-r--r--packages/service-preload/package.json6
-rw-r--r--packages/service-preload/vite.config.js31
-rw-r--r--packages/service-shared/package.json6
-rw-r--r--packages/service-shared/vite.config.js35
-rw-r--r--packages/shared/esbuild.config.js23
-rw-r--r--packages/shared/package.json8
-rw-r--r--packages/shared/vite.config.js40
25 files changed, 203 insertions, 295 deletions
diff --git a/packages/main/esbuild.config.js b/packages/main/esbuild.config.js
new file mode 100644
index 0000000..7653078
--- /dev/null
+++ b/packages/main/esbuild.config.js
@@ -0,0 +1,24 @@
1// @ts-check
2
3const { node } = require('../../config/build-common');
4const { getConfig } = require('../../config/esbuild-config');
5
6const externalPackages = ['electron'];
7
8if (process.env.MODE !== 'development') {
9 externalPackages.push('electron-devtools-installer');
10}
11
12module.exports = getConfig({
13 absWorkingDir: __dirname,
14 entryPoints: [
15 'src/index.ts',
16 ],
17 outfile: 'dist/index.cjs',
18 format: 'cjs',
19 platform: 'node',
20 target: node,
21 external: externalPackages,
22}, {
23 VITE_DEV_SERVER_URL: process.env.VITE_DEV_SERVER_URL || null,
24});
diff --git a/packages/main/package.json b/packages/main/package.json
index c4670a8..76eff8e 100644
--- a/packages/main/package.json
+++ b/packages/main/package.json
@@ -6,7 +6,6 @@
6 "types": "dist-types/index.d.ts", 6 "types": "dist-types/index.d.ts",
7 "scripts": { 7 "scripts": {
8 "clean": "rimraf dist", 8 "clean": "rimraf dist",
9 "build": "vite build",
10 "typecheck": "tsc" 9 "typecheck": "tsc"
11 }, 10 },
12 "dependencies": { 11 "dependencies": {
@@ -14,7 +13,7 @@
14 "@sophie/shared": "workspace:*", 13 "@sophie/shared": "workspace:*",
15 "electron": "16.0.5", 14 "electron": "16.0.5",
16 "json5": "^2.2.0", 15 "json5": "^2.2.0",
17 "lodash": "^4.17.21", 16 "lodash-es": "^4.17.21",
18 "loglevel": "^1.8.0", 17 "loglevel": "^1.8.0",
19 "loglevel-plugin-prefix": "^0.8.4", 18 "loglevel-plugin-prefix": "^0.8.4",
20 "mobx": "^6.3.10", 19 "mobx": "^6.3.10",
@@ -22,14 +21,13 @@
22 "ms": "^2.1.3" 21 "ms": "^2.1.3"
23 }, 22 },
24 "devDependencies": { 23 "devDependencies": {
25 "@types/debug": "^4",
26 "@types/electron-devtools-installer": "^2.2.1", 24 "@types/electron-devtools-installer": "^2.2.1",
27 "@types/lodash": "^4.14.178", 25 "@types/lodash-es": "^4.17.5",
28 "@types/ms": "^0.7.31", 26 "@types/ms": "^0.7.31",
29 "@types/node": "^17.0.5", 27 "@types/node": "^17.0.5",
30 "electron-devtools-installer": "^3.2.0", 28 "electron-devtools-installer": "^3.2.0",
29 "esbuild": "^0.14.9",
31 "rimraf": "^3.0.2", 30 "rimraf": "^3.0.2",
32 "typescript": "^4.5.4", 31 "typescript": "^4.5.4"
33 "vite": "^2.7.7"
34 } 32 }
35} 33}
diff --git a/packages/main/src/controllers/config.ts b/packages/main/src/controllers/config.ts
index 7187ab4..f2467c7 100644
--- a/packages/main/src/controllers/config.ts
+++ b/packages/main/src/controllers/config.ts
@@ -18,7 +18,7 @@
18 * SPDX-License-Identifier: AGPL-3.0-only 18 * SPDX-License-Identifier: AGPL-3.0-only
19 */ 19 */
20 20
21import { debounce } from 'lodash'; 21import debounce from 'lodash-es/debounce';
22import ms from 'ms'; 22import ms from 'ms';
23import { applySnapshot, getSnapshot, onSnapshot } from 'mobx-state-tree'; 23import { applySnapshot, getSnapshot, onSnapshot } from 'mobx-state-tree';
24 24
diff --git a/packages/main/src/devTools.ts b/packages/main/src/devTools.ts
index b98974a..6c25b3e 100644
--- a/packages/main/src/devTools.ts
+++ b/packages/main/src/devTools.ts
@@ -18,38 +18,35 @@
18 * SPDX-License-Identifier: AGPL-3.0-only 18 * SPDX-License-Identifier: AGPL-3.0-only
19 */ 19 */
20 20
21import type { App, BrowserWindow } from 'electron'; 21import type { BrowserWindow } from 'electron';
22 22
23/** 23/**
24 * Installs the react and redux developer tools extensions. 24 * Installs the react and redux developer tools extensions.
25 * 25 *
26 * We use the redux devtools and connect the mobx store to it with `mst-middlewares`, 26 * We use the redux devtools and connect the mobx store to it with `mst-middlewares`,
27 * because the mobx-state-tree devtools are currently unmaintained. 27 * because the mobx-state-tree devtools are currently unmaintained.
28 *
29 * @param app The electron application instance.
30 */ 28 */
31export function installDevToolsExtensions(app: App): void { 29export async function installDevToolsExtensions(): Promise<void> {
32 app.whenReady().then(async () => { 30 const installerPackage = await import('electron-devtools-installer');
33 const { 31 const {
34 default: installExtension, 32 default: installExtension,
33 REACT_DEVELOPER_TOOLS,
34 REDUX_DEVTOOLS,
35 } = installerPackage.default instanceof Function
36 ? installerPackage
37 : installerPackage.default as unknown as typeof import('electron-devtools-installer');
38 await installExtension(
39 [
35 REACT_DEVELOPER_TOOLS, 40 REACT_DEVELOPER_TOOLS,
36 REDUX_DEVTOOLS, 41 REDUX_DEVTOOLS,
37 } = await import('electron-devtools-installer'); 42 ],
38 installExtension( 43 {
39 [ 44 forceDownload: false,
40 REACT_DEVELOPER_TOOLS, 45 loadExtensionOptions: {
41 REDUX_DEVTOOLS, 46 allowFileAccess: true,
42 ],
43 {
44 forceDownload: false,
45 loadExtensionOptions: {
46 allowFileAccess: true,
47 },
48 }, 47 },
49 ); 48 },
50 }).catch((err) => { 49 );
51 console.error('Failed to install devtools extension', err);
52 });
53} 50}
54 51
55/** 52/**
diff --git a/packages/main/src/index.ts b/packages/main/src/index.ts
index 7c7be35..f8b6787 100644
--- a/packages/main/src/index.ts
+++ b/packages/main/src/index.ts
@@ -50,6 +50,9 @@ import { createMainStore } from './stores/MainStore';
50 50
51const isDevelopment = import.meta.env.MODE === 'development'; 51const isDevelopment = import.meta.env.MODE === 'development';
52 52
53// Alwayse enable sandboxing.
54app.enableSandbox();
55
53// Use alternative directory when debugging to avoid clobbering the main installation. 56// Use alternative directory when debugging to avoid clobbering the main installation.
54if (isDevelopment) { 57if (isDevelopment) {
55 app.setPath('userData', `${app.getPath('userData')}-dev`); 58 app.setPath('userData', `${app.getPath('userData')}-dev`);
@@ -62,9 +65,6 @@ if (!isSingleInstance) {
62 process.exit(0); 65 process.exit(0);
63} 66}
64 67
65// Alwayse enable sandboxing.
66app.enableSandbox();
67
68// Disable chromium's MPRIS integration, which is usually more annoying 68// Disable chromium's MPRIS integration, which is usually more annoying
69// (triggered by random sounds played by websites) than useful. 69// (triggered by random sounds played by websites) than useful.
70app.commandLine.appendSwitch( 70app.commandLine.appendSwitch(
@@ -90,17 +90,13 @@ function getResourceUrl(relativePath: string): string {
90 return new URL(relativePath, baseUrl).toString(); 90 return new URL(relativePath, baseUrl).toString();
91} 91}
92 92
93let serviceInjectRelativePath = '../../service-inject/dist/index.cjs'; 93let serviceInjectRelativePath = '../../service-inject/dist/index.js';
94let serviceInjectPath = getResourcePath(serviceInjectRelativePath); 94let serviceInjectPath = getResourcePath(serviceInjectRelativePath);
95let serviceInject: WebSource = { 95let serviceInject: WebSource = {
96 code: readFileSync(serviceInjectPath, 'utf8'), 96 code: readFileSync(serviceInjectPath, 'utf8'),
97 url: getResourceUrl(serviceInjectRelativePath), 97 url: getResourceUrl(serviceInjectRelativePath),
98}; 98};
99 99
100if (isDevelopment) {
101 installDevToolsExtensions(app);
102}
103
104let mainWindow: BrowserWindow | null = null; 100let mainWindow: BrowserWindow | null = null;
105 101
106const store = createMainStore(); 102const store = createMainStore();
@@ -134,13 +130,13 @@ function shouldCancelMainWindowRequest(url: string, method: string): boolean {
134 return !normalizedUrl.startsWith(getResourceUrl(rendererBaseUrl)); 130 return !normalizedUrl.startsWith(getResourceUrl(rendererBaseUrl));
135} 131}
136 132
137function createWindow(): Promise<unknown> { 133async function createWindow(): Promise<unknown> {
138 mainWindow = new BrowserWindow({ 134 mainWindow = new BrowserWindow({
139 show: false, 135 show: false,
140 autoHideMenuBar: true, 136 autoHideMenuBar: true,
141 webPreferences: { 137 webPreferences: {
142 devTools: isDevelopment,
143 sandbox: true, 138 sandbox: true,
139 devTools: isDevelopment,
144 preload: getResourcePath('../../preload/dist/index.cjs'), 140 preload: getResourcePath('../../preload/dist/index.cjs'),
145 }, 141 },
146 }); 142 });
@@ -159,8 +155,14 @@ function createWindow(): Promise<unknown> {
159 }) 155 })
160 }); 156 });
161 157
162 webContents.on('will-navigate', (event) => { 158 const pageUrl = (isDevelopment && import.meta.env.VITE_DEV_SERVER_URL !== undefined)
163 event.preventDefault(); 159 ? import.meta.env.VITE_DEV_SERVER_URL
160 : getResourceUrl('../renderer/dist/index.html');
161
162 webContents.on('will-navigate', (event, url) => {
163 if (url !== pageUrl) {
164 event.preventDefault();
165 }
164 }); 166 });
165 167
166 webContents.setWindowOpenHandler(() => ({ action: 'deny' })); 168 webContents.setWindowOpenHandler(() => ({ action: 'deny' }));
@@ -279,10 +281,6 @@ function createWindow(): Promise<unknown> {
279 callback({ requestHeaders }); 281 callback({ requestHeaders });
280 }); 282 });
281 283
282 const pageUrl = (isDevelopment && import.meta.env.VITE_DEV_SERVER_URL !== undefined)
283 ? import.meta.env.VITE_DEV_SERVER_URL
284 : getResourceUrl('../renderer/dist/index.html');
285
286 return Promise.all([ 284 return Promise.all([
287 mainWindow.loadURL(pageUrl), 285 mainWindow.loadURL(pageUrl),
288 browserView.webContents.loadURL('https://git.marussy.com/sophie/about'), 286 browserView.webContents.loadURL('https://git.marussy.com/sophie/about'),
@@ -307,7 +305,13 @@ app.on('window-all-closed', () => {
307 } 305 }
308}); 306});
309 307
310app.whenReady().then(createWindow).catch((err) => { 308app.whenReady().then(async () => {
309 if (isDevelopment) {
310 await installDevToolsExtensions();
311 }
312
313 return createWindow();
314}).catch((err) => {
311 console.error('Failed to create window', err); 315 console.error('Failed to create window', err);
312 process.exit(1); 316 process.exit(1);
313}); 317});
diff --git a/packages/main/src/services/ConfigPersistenceService.ts b/packages/main/src/services/ConfigPersistenceService.ts
index 1c0315f..ee5eb9f 100644
--- a/packages/main/src/services/ConfigPersistenceService.ts
+++ b/packages/main/src/services/ConfigPersistenceService.ts
@@ -20,7 +20,7 @@
20import { watch } from 'fs'; 20import { watch } from 'fs';
21import { readFile, stat, writeFile } from 'fs/promises'; 21import { readFile, stat, writeFile } from 'fs/promises';
22import JSON5 from 'json5'; 22import JSON5 from 'json5';
23import { throttle } from 'lodash'; 23import throttle from 'lodash-es/throttle';
24import { join } from 'path'; 24import { join } from 'path';
25 25
26import type { ConfigSnapshotOut } from '../stores/Config'; 26import type { ConfigSnapshotOut } from '../stores/Config';
diff --git a/packages/main/src/utils/logging.ts b/packages/main/src/utils/logging.ts
index 9f1133f..5cb5d21 100644
--- a/packages/main/src/utils/logging.ts
+++ b/packages/main/src/utils/logging.ts
@@ -36,10 +36,6 @@ prefix.apply(loglevel, {
36 const lastSegment = nameSegments.pop(); 36 const lastSegment = nameSegments.pop();
37 shortName = [...nameSegments.map((segment) => segment[0]), lastSegment].join(':'); 37 shortName = [...nameSegments.map((segment) => segment[0]), lastSegment].join(':');
38 } 38 }
39 if (isDevelopment) {
40 // `watch.js` already appends timestamps.
41 return `${level} (${shortName})`;
42 }
43 return `[${timestamp}] ${level} (${shortName})`; 39 return `[${timestamp}] ${level} (${shortName})`;
44 }, 40 },
45}); 41});
diff --git a/packages/main/vite.config.js b/packages/main/vite.config.js
deleted file mode 100644
index bdb0ca1..0000000
--- a/packages/main/vite.config.js
+++ /dev/null
@@ -1,39 +0,0 @@
1// @ts-check
2
3import { builtinModules } from 'module';
4
5import { makeConfig, node } from '../../config/vite-common';
6
7/** @type {string} */
8const PACKAGE_ROOT = __dirname;
9
10/**
11 * @type {import('vite').UserConfig}
12 * @see https://vitejs.dev/config/
13 */
14const config = makeConfig({
15 root: PACKAGE_ROOT,
16 define: {
17 // Allow access to process.env in imported packages.
18 // https://github.com/vitejs/vite/issues/3176#issuecomment-876610206
19 'process.env': 'process["env"]',
20 'global.process.env': 'global.process["env"]',
21 'globalThis.process.env': 'globalThis.process["env"]',
22 },
23 build: {
24 target: node,
25 lib: {
26 entry: 'src/index.ts',
27 formats: ['cjs'],
28 },
29 rollupOptions: {
30 external: [
31 'electron',
32 'electron-devtools-installer',
33 ...builtinModules,
34 ],
35 },
36 },
37});
38
39export default config;
diff --git a/packages/preload/esbuild.config.js b/packages/preload/esbuild.config.js
new file mode 100644
index 0000000..76ac33f
--- /dev/null
+++ b/packages/preload/esbuild.config.js
@@ -0,0 +1,19 @@
1// @ts-check
2
3const { chrome } = require('../../config/build-common');
4const { getConfig } = require('../../config/esbuild-config');
5
6module.exports = getConfig({
7 absWorkingDir: __dirname,
8 entryPoints: [
9 'src/index.ts',
10 ],
11 outfile: 'dist/index.cjs',
12 format: 'cjs',
13 platform: 'node',
14 target: chrome,
15 sourcemap: 'inline',
16 external: [
17 'electron',
18 ],
19});
diff --git a/packages/preload/package.json b/packages/preload/package.json
index caa23b6..5eb6055 100644
--- a/packages/preload/package.json
+++ b/packages/preload/package.json
@@ -8,7 +8,6 @@
8 "scripts": { 8 "scripts": {
9 "clean": "rimraf dist", 9 "clean": "rimraf dist",
10 "test": "jest", 10 "test": "jest",
11 "build": "vite build",
12 "typecheck": "tsc" 11 "typecheck": "tsc"
13 }, 12 },
14 "dependencies": { 13 "dependencies": {
@@ -24,7 +23,6 @@
24 "jsdom": "^19.0.0", 23 "jsdom": "^19.0.0",
25 "rimraf": "^3.0.2", 24 "rimraf": "^3.0.2",
26 "ts-jest": "^27.1.2", 25 "ts-jest": "^27.1.2",
27 "typescript": "^4.5.4", 26 "typescript": "^4.5.4"
28 "vite": "^2.7.7"
29 } 27 }
30} 28}
diff --git a/packages/preload/vite.config.js b/packages/preload/vite.config.js
deleted file mode 100644
index 409d912..0000000
--- a/packages/preload/vite.config.js
+++ /dev/null
@@ -1,31 +0,0 @@
1// @ts-check
2
3import { builtinModules } from 'module';
4
5import { chrome, makeConfig } from '../../config/vite-common';
6
7/** @type {string} */
8const PACKAGE_ROOT = __dirname;
9
10/**
11 * @type {import('vite').UserConfig}
12 * @see https://vitejs.dev/config/
13 */
14const config = makeConfig({
15 root: PACKAGE_ROOT,
16 build: {
17 target: chrome,
18 lib: {
19 entry: 'src/index.ts',
20 formats: ['cjs'],
21 },
22 rollupOptions: {
23 external: [
24 'electron',
25 ...builtinModules,
26 ],
27 },
28 },
29});
30
31export default config;
diff --git a/packages/renderer/package.json b/packages/renderer/package.json
index ff8955a..1d34cdb 100644
--- a/packages/renderer/package.json
+++ b/packages/renderer/package.json
@@ -5,8 +5,7 @@
5 "main": "dist/index.html", 5 "main": "dist/index.html",
6 "types": "dist-types/index.d.ts", 6 "types": "dist-types/index.d.ts",
7 "scripts": { 7 "scripts": {
8 "clean": "rimraf dist node_modules", 8 "clean": "rimraf dist",
9 "build": "vite build",
10 "typecheck": "tsc" 9 "typecheck": "tsc"
11 }, 10 },
12 "dependencies": { 11 "dependencies": {
@@ -18,7 +17,7 @@
18 "@sophie/shared": "workspace:*", 17 "@sophie/shared": "workspace:*",
19 "lodash": "^4.17.21", 18 "lodash": "^4.17.21",
20 "mobx": "^6.3.10", 19 "mobx": "^6.3.10",
21 "mobx-react-lite": "^3.2.2", 20 "mobx-react-lite": "^3.2.3",
22 "mobx-state-tree": "^5.1.0", 21 "mobx-state-tree": "^5.1.0",
23 "react": "^17.0.2", 22 "react": "^17.0.2",
24 "react-dom": "^17.0.2" 23 "react-dom": "^17.0.2"
@@ -32,6 +31,6 @@
32 "remotedev": "^0.2.9", 31 "remotedev": "^0.2.9",
33 "rimraf": "^3.0.2", 32 "rimraf": "^3.0.2",
34 "typescript": "^4.5.4", 33 "typescript": "^4.5.4",
35 "vite": "^2.7.7" 34 "vite": "^2.7.9"
36 } 35 }
37} 36}
diff --git a/packages/renderer/src/devTools.ts b/packages/renderer/src/devTools.ts
index 7c44559..3ec66aa 100644
--- a/packages/renderer/src/devTools.ts
+++ b/packages/renderer/src/devTools.ts
@@ -61,12 +61,9 @@ export function exposeToReduxDevtools(model: IAnyStateTreeNode): void {
61 * `build/watch.js` sends a reload event on bundle write. 61 * `build/watch.js` sends a reload event on bundle write.
62 */ 62 */
63export function hotReloadServices(): void { 63export function hotReloadServices(): void {
64 import.meta.hot?.on( 64 import.meta.hot?.on('sophie:reload-services', () => {
65 'sophie:reload-services', 65 window.sophieRenderer.dispatchAction({
66 () => { 66 action: 'reload-all-services',
67 window.sophieRenderer.dispatchAction({ 67 });
68 action: 'reload-all-services', 68 });
69 });
70 },
71 );
72} 69}
diff --git a/packages/renderer/vite.config.js b/packages/renderer/vite.config.js
index 94f0b76..30729c0 100644
--- a/packages/renderer/vite.config.js
+++ b/packages/renderer/vite.config.js
@@ -3,21 +3,35 @@
3/* eslint-env node */ 3/* eslint-env node */
4 4
5import { builtinModules } from 'module'; 5import { builtinModules } from 'module';
6import { join } from 'path';
6import react from '@vitejs/plugin-react'; 7import react from '@vitejs/plugin-react';
7 8
8import { chrome, makeConfig } from '../../config/vite-common'; 9import { banner, chrome } from '../../config/build-common';
9 10
10/** @type {string} */ 11const mode = process.env.MODE || 'development';
11const PACKAGE_ROOT = __dirname; 12
13const isDevelopment = mode === 'development';
12 14
13/** 15/**
14 * @type {import('vite').UserConfig} 16 * @type {import('vite').UserConfig}
15 * @see https://vitejs.dev/config/ 17 * @see https://vitejs.dev/config/
16 */ 18 */
17const config = makeConfig({ 19export default {
18 root: PACKAGE_ROOT, 20 /** @type {import('vite').LogLevel} */
21 logLevel: 'info',
22 mode,
23 root: __dirname,
24 cacheDir: join(__dirname, '../../.vite'),
19 plugins: [ 25 plugins: [
20 react(), 26 react({
27 babel: {
28 // Gets rid of deoptimization warnings for large chunks.
29 // We don't need to minify here, because the output of babel
30 // will get passed to esbuild anyways.
31 compact: false,
32 minified: false,
33 },
34 }),
21 ], 35 ],
22 base: '', 36 base: '',
23 server: { 37 server: {
@@ -25,16 +39,32 @@ const config = makeConfig({
25 strict: true, 39 strict: true,
26 }, 40 },
27 }, 41 },
42 resolve: {
43 preserveSymlinks: true,
44 },
45 optimizeDeps: {
46 exclude: [
47 // Already bundled by esbuild.
48 '@sophie/shared',
49 ],
50 },
28 build: { 51 build: {
29 target: chrome, 52 target: chrome,
53 assetsDir: '.',
54 outDir: 'dist',
55 emptyOutDir: true,
56 sourcemap: isDevelopment,
57 minify: !isDevelopment,
58 brotliSize: false,
30 rollupOptions: { 59 rollupOptions: {
31 external: [ 60 external: [
32 'mst-middlewares', 61 'mst-middlewares',
33 'remotedev', 62 'remotedev',
34 ...builtinModules, 63 ...builtinModules,
35 ], 64 ],
65 output: {
66 banner,
67 }
36 }, 68 },
37 }, 69 },
38}); 70};
39
40export default config;
diff --git a/packages/service-inject/esbuild.config.js b/packages/service-inject/esbuild.config.js
new file mode 100644
index 0000000..38e5b7d
--- /dev/null
+++ b/packages/service-inject/esbuild.config.js
@@ -0,0 +1,16 @@
1// @ts-check
2
3const { chrome } = require('../../config/build-common');
4const { getConfig } = require('../../config/esbuild-config');
5
6module.exports = getConfig({
7 absWorkingDir: __dirname,
8 entryPoints: [
9 'src/index.ts',
10 ],
11 outfile: 'dist/index.js',
12 format: 'iife',
13 platform: 'browser',
14 target: chrome,
15 sourcemap: 'inline',
16});
diff --git a/packages/service-inject/package.json b/packages/service-inject/package.json
index 573fc82..94cd825 100644
--- a/packages/service-inject/package.json
+++ b/packages/service-inject/package.json
@@ -7,7 +7,6 @@
7 "types": "dist-types/index.d.ts", 7 "types": "dist-types/index.d.ts",
8 "scripts": { 8 "scripts": {
9 "clean": "rimraf dist", 9 "clean": "rimraf dist",
10 "build": "vite build",
11 "typecheck": "tsc" 10 "typecheck": "tsc"
12 }, 11 },
13 "dependencies": { 12 "dependencies": {
@@ -15,7 +14,6 @@
15 }, 14 },
16 "devDependencies": { 15 "devDependencies": {
17 "rimraf": "^3.0.2", 16 "rimraf": "^3.0.2",
18 "typescript": "^4.5.4", 17 "typescript": "^4.5.4"
19 "vite": "^2.7.7"
20 } 18 }
21} 19}
diff --git a/packages/service-inject/vite.config.js b/packages/service-inject/vite.config.js
deleted file mode 100644
index 9c65c15..0000000
--- a/packages/service-inject/vite.config.js
+++ /dev/null
@@ -1,28 +0,0 @@
1// @ts-check
2
3import { builtinModules } from 'module';
4
5import { chrome, makeConfig } from '../../config/vite-common';
6
7/** @type {string} */
8const PACKAGE_ROOT = __dirname;
9
10/**
11 * @type {import('vite').UserConfig}
12 * @see https://vitejs.dev/config/
13 */
14const config = makeConfig({
15 root: PACKAGE_ROOT,
16 build: {
17 target: chrome,
18 lib: {
19 entry: 'src/index.ts',
20 formats: ['cjs'],
21 },
22 rollupOptions: {
23 external: builtinModules,
24 },
25 },
26});
27
28export default config;
diff --git a/packages/service-preload/esbuild.config.js b/packages/service-preload/esbuild.config.js
new file mode 100644
index 0000000..76ac33f
--- /dev/null
+++ b/packages/service-preload/esbuild.config.js
@@ -0,0 +1,19 @@
1// @ts-check
2
3const { chrome } = require('../../config/build-common');
4const { getConfig } = require('../../config/esbuild-config');
5
6module.exports = getConfig({
7 absWorkingDir: __dirname,
8 entryPoints: [
9 'src/index.ts',
10 ],
11 outfile: 'dist/index.cjs',
12 format: 'cjs',
13 platform: 'node',
14 target: chrome,
15 sourcemap: 'inline',
16 external: [
17 'electron',
18 ],
19});
diff --git a/packages/service-preload/package.json b/packages/service-preload/package.json
index 6f3faf9..fb67a8e 100644
--- a/packages/service-preload/package.json
+++ b/packages/service-preload/package.json
@@ -2,11 +2,10 @@
2 "name": "@sophie/service-preload", 2 "name": "@sophie/service-preload",
3 "version": "0.1.0", 3 "version": "0.1.0",
4 "private": true, 4 "private": true,
5 "main": "dist/index.cjs", 5 "main": "dist/index.js",
6 "types": "dist-types/index.d.ts", 6 "types": "dist-types/index.d.ts",
7 "scripts": { 7 "scripts": {
8 "clean": "rimraf dist", 8 "clean": "rimraf dist",
9 "build": "vite build",
10 "typecheck": "tsc" 9 "typecheck": "tsc"
11 }, 10 },
12 "dependencies": { 11 "dependencies": {
@@ -15,7 +14,6 @@
15 }, 14 },
16 "devDependencies": { 15 "devDependencies": {
17 "rimraf": "^3.0.2", 16 "rimraf": "^3.0.2",
18 "typescript": "^4.5.4", 17 "typescript": "^4.5.4"
19 "vite": "^2.7.7"
20 } 18 }
21} 19}
diff --git a/packages/service-preload/vite.config.js b/packages/service-preload/vite.config.js
deleted file mode 100644
index 409d912..0000000
--- a/packages/service-preload/vite.config.js
+++ /dev/null
@@ -1,31 +0,0 @@
1// @ts-check
2
3import { builtinModules } from 'module';
4
5import { chrome, makeConfig } from '../../config/vite-common';
6
7/** @type {string} */
8const PACKAGE_ROOT = __dirname;
9
10/**
11 * @type {import('vite').UserConfig}
12 * @see https://vitejs.dev/config/
13 */
14const config = makeConfig({
15 root: PACKAGE_ROOT,
16 build: {
17 target: chrome,
18 lib: {
19 entry: 'src/index.ts',
20 formats: ['cjs'],
21 },
22 rollupOptions: {
23 external: [
24 'electron',
25 ...builtinModules,
26 ],
27 },
28 },
29});
30
31export default config;
diff --git a/packages/service-shared/package.json b/packages/service-shared/package.json
index 980d0c0..b9128c6 100644
--- a/packages/service-shared/package.json
+++ b/packages/service-shared/package.json
@@ -3,11 +3,10 @@
3 "version": "0.1.0", 3 "version": "0.1.0",
4 "private": true, 4 "private": true,
5 "sideEffects": false, 5 "sideEffects": false,
6 "main": "dist/index.cjs", 6 "main": "src/index.ts",
7 "types": "dist/index.d.ts", 7 "types": "dist/index.d.ts",
8 "scripts": { 8 "scripts": {
9 "clean": "rimraf dist tsconfig.tsbuildinfo", 9 "clean": "rimraf dist tsconfig.tsbuildinfo",
10 "build": "vite build",
11 "typecheck": "tsc" 10 "typecheck": "tsc"
12 }, 11 },
13 "dependencies": { 12 "dependencies": {
@@ -15,7 +14,6 @@
15 }, 14 },
16 "devDependencies": { 15 "devDependencies": {
17 "rimraf": "^3.0.2", 16 "rimraf": "^3.0.2",
18 "typescript": "^4.5.4", 17 "typescript": "^4.5.4"
19 "vite": "^2.7.7"
20 } 18 }
21} 19}
diff --git a/packages/service-shared/vite.config.js b/packages/service-shared/vite.config.js
deleted file mode 100644
index 2391810..0000000
--- a/packages/service-shared/vite.config.js
+++ /dev/null
@@ -1,35 +0,0 @@
1// @ts-check
2
3import { builtinModules } from 'module';
4
5import { chrome, makeConfig, node } from '../../config/vite-common';
6
7/** @type string */
8const PACKAGE_ROOT = __dirname;
9
10/**
11 * @type {import('vite').UserConfig}
12 * @see https://vitejs.dev/config/
13 */
14const config = makeConfig({
15 root: PACKAGE_ROOT,
16 build: {
17 target: [
18 chrome,
19 node,
20 ],
21 lib: {
22 entry: 'src/index.ts',
23 formats: ['cjs'],
24 },
25 rollupOptions: {
26 external: [
27 'zod',
28 ...builtinModules,
29 ],
30 },
31 emptyOutDir: false, // Do not remove .d.ts files.
32 },
33});
34
35export default config;
diff --git a/packages/shared/esbuild.config.js b/packages/shared/esbuild.config.js
new file mode 100644
index 0000000..f58d776
--- /dev/null
+++ b/packages/shared/esbuild.config.js
@@ -0,0 +1,23 @@
1// @ts-check
2
3const { chrome } = require('../../config/build-common');
4const { getConfig } = require('../../config/esbuild-config');
5
6module.exports = getConfig({
7 absWorkingDir: __dirname,
8 entryPoints: [
9 'src/index.ts',
10 ],
11 outfile: 'dist/index.mjs',
12 format: 'esm',
13 // The package that includes this one will have a header comment,
14 // no need to have an additional one here.
15 banner: {},
16 platform: 'node',
17 target: chrome,
18 external: [
19 'mobx',
20 'mobx-state-tree',
21 'zod',
22 ],
23});
diff --git a/packages/shared/package.json b/packages/shared/package.json
index a2e4232..3db4cb1 100644
--- a/packages/shared/package.json
+++ b/packages/shared/package.json
@@ -3,12 +3,11 @@
3 "version": "0.1.0", 3 "version": "0.1.0",
4 "private": true, 4 "private": true,
5 "sideEffects": false, 5 "sideEffects": false,
6 "main": "dist/index.cjs", 6 "main": "src/index.ts",
7 "module": "dist/index.es.js", 7 "module": "dist/index.mjs",
8 "types": "dist/index.d.ts", 8 "types": "dist/index.d.ts",
9 "scripts": { 9 "scripts": {
10 "clean": "rimraf dist tsconfig.tsbuildinfo", 10 "clean": "rimraf dist tsconfig.tsbuildinfo",
11 "build": "vite build",
12 "typecheck": "tsc" 11 "typecheck": "tsc"
13 }, 12 },
14 "dependencies": { 13 "dependencies": {
@@ -18,7 +17,6 @@
18 }, 17 },
19 "devDependencies": { 18 "devDependencies": {
20 "rimraf": "^3.0.2", 19 "rimraf": "^3.0.2",
21 "typescript": "^4.5.4", 20 "typescript": "^4.5.4"
22 "vite": "^2.7.7"
23 } 21 }
24} 22}
diff --git a/packages/shared/vite.config.js b/packages/shared/vite.config.js
deleted file mode 100644
index 5fb1ceb..0000000
--- a/packages/shared/vite.config.js
+++ /dev/null
@@ -1,40 +0,0 @@
1// @ts-check
2
3import { builtinModules } from 'module';
4
5import { chrome, makeConfig, node } from '../../config/vite-common';
6
7/** @type {string} */
8const PACKAGE_ROOT = __dirname;
9
10/**
11 * @type {import('vite').UserConfig}
12 * @see https://vitejs.dev/config/
13 */
14const config = makeConfig({
15 root: PACKAGE_ROOT,
16 build: {
17 target: [
18 chrome,
19 node,
20 ],
21 lib: {
22 entry: 'src/index.ts',
23 formats: [
24 'cjs',
25 'es',
26 ],
27 },
28 rollupOptions: {
29 external: [
30 'mobx',
31 'mobx-state-tree',
32 'zod',
33 ...builtinModules,
34 ],
35 },
36 emptyOutDir: false, // Do not remove .d.ts files.
37 },
38});
39
40export default config;