aboutsummaryrefslogtreecommitdiffstats
path: root/packages/renderer
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/renderer
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/renderer')
-rw-r--r--packages/renderer/package.json7
-rw-r--r--packages/renderer/src/devTools.ts13
-rw-r--r--packages/renderer/vite.config.js48
3 files changed, 47 insertions, 21 deletions
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;