aboutsummaryrefslogtreecommitdiffstats
path: root/config/getEsbuildConfig.js
diff options
context:
space:
mode:
Diffstat (limited to 'config/getEsbuildConfig.js')
-rw-r--r--config/getEsbuildConfig.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/config/getEsbuildConfig.js b/config/getEsbuildConfig.js
new file mode 100644
index 0000000..b338d68
--- /dev/null
+++ b/config/getEsbuildConfig.js
@@ -0,0 +1,40 @@
1/* eslint-disable no-process-env */
2import { banner } from './buildConstants.js';
3
4/** @type {string} */
5const mode = process.env.MODE || 'development';
6
7/** @type {boolean} */
8const isDevelopment = mode === 'development';
9
10/** @type {string} */
11const modeString = JSON.stringify(mode);
12
13/**
14 * @param {import('esbuild').BuildOptions} config
15 * @param {Record<string, unknown>} [extraMetaEnvVars]
16 * @returns {import('esbuild').BuildOptions}
17 */
18export default function getEsbuildConfig(config, extraMetaEnvVars) {
19 return {
20 logLevel: 'info',
21 bundle: true,
22 treeShaking: !isDevelopment,
23 minify: !isDevelopment,
24 banner: {
25 js: banner,
26 },
27 ...config,
28 sourcemap: isDevelopment ? (config.sourcemap || true) : false,
29 define: {
30 'process.env.NODE_ENV': modeString,
31 'process.env.MODE': modeString,
32 'import.meta.env': JSON.stringify({
33 DEV: isDevelopment,
34 MODE: mode,
35 PROD: !isDevelopment,
36 ...extraMetaEnvVars,
37 }),
38 },
39 };
40}