// @ts-check const { banner } = require('./build-common'); /** @type {string} */ const mode = process.env.MODE || 'development'; /** @type {boolean} */ const isDevelopment = mode === 'development'; const modeString = JSON.stringify(mode); const defineEnv = { 'import.meta.env.DEV': JSON.stringify(isDevelopment), 'import.meta.env.MODE': modeString, 'import.meta.env.PROD': JSON.stringify(!isDevelopment), 'process.env.NODE_ENV': modeString, 'process.env.MODE': modeString, }; /** * @param {import('esbuild').BuildOptions} config * @param {object | unknown} metaEnvVars * @returns {import('esbuild').BuildOptions} */ module.exports.getConfig = function(config, metaEnvVars) { const defineMeta = {}; for (const varName in metaEnvVars) { defineMeta[`import.meta.env.${varName}`] = JSON.stringify(metaEnvVars[varName]); } return { logLevel: 'info', bundle: true, treeShaking: !isDevelopment, minify: !isDevelopment, banner: { js: banner, }, ...config, sourcemap: isDevelopment ? (config.sourcemap || true) : false, define: { ...defineEnv, ...defineMeta, ...config.define, }, plugins: [ ...(config.plugins || []), ], }; }