aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared
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/shared
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/shared')
-rw-r--r--packages/shared/esbuild.config.js23
-rw-r--r--packages/shared/package.json8
-rw-r--r--packages/shared/vite.config.js40
3 files changed, 26 insertions, 45 deletions
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;