diff options
Diffstat (limited to 'config/esbuild-config.js')
-rw-r--r-- | config/esbuild-config.js | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/config/esbuild-config.js b/config/esbuild-config.js new file mode 100644 index 0000000..9140b89 --- /dev/null +++ b/config/esbuild-config.js | |||
@@ -0,0 +1,50 @@ | |||
1 | // @ts-check | ||
2 | |||
3 | const { banner } = require('./build-common'); | ||
4 | |||
5 | /** @type {string} */ | ||
6 | const mode = process.env.MODE || 'development'; | ||
7 | |||
8 | /** @type {boolean} */ | ||
9 | const isDevelopment = mode === 'development'; | ||
10 | |||
11 | const modeString = JSON.stringify(mode); | ||
12 | |||
13 | const defineEnv = { | ||
14 | 'import.meta.env.DEV': JSON.stringify(isDevelopment), | ||
15 | 'import.meta.env.MODE': modeString, | ||
16 | 'import.meta.env.PROD': JSON.stringify(!isDevelopment), | ||
17 | 'process.env.NODE_ENV': modeString, | ||
18 | 'process.env.MODE': modeString, | ||
19 | }; | ||
20 | |||
21 | /** | ||
22 | * @param {import('esbuild').BuildOptions} config | ||
23 | * @param {object | unknown} metaEnvVars | ||
24 | * @returns {import('esbuild').BuildOptions} | ||
25 | */ | ||
26 | module.exports.getConfig = function(config, metaEnvVars) { | ||
27 | const defineMeta = {}; | ||
28 | for (const varName in metaEnvVars) { | ||
29 | defineMeta[`import.meta.env.${varName}`] = JSON.stringify(metaEnvVars[varName]); | ||
30 | } | ||
31 | return { | ||
32 | logLevel: 'info', | ||
33 | bundle: true, | ||
34 | treeShaking: !isDevelopment, | ||
35 | minify: !isDevelopment, | ||
36 | banner: { | ||
37 | js: banner, | ||
38 | }, | ||
39 | ...config, | ||
40 | sourcemap: isDevelopment ? (config.sourcemap || true) : false, | ||
41 | define: { | ||
42 | ...defineEnv, | ||
43 | ...defineMeta, | ||
44 | ...config.define, | ||
45 | }, | ||
46 | plugins: [ | ||
47 | ...(config.plugins || []), | ||
48 | ], | ||
49 | }; | ||
50 | } | ||