import { banner } from './build-common.js'; /** @type {string} */ const mode = process.env.MODE || 'development'; /** @type {boolean} */ const isDevelopment = mode === 'development'; /** @type {string} */ const modeString = JSON.stringify(mode); /** @type {Record} */ 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 {Record} [metaEnvVars] * @returns {import('esbuild').BuildOptions} */ export function getConfig(config, metaEnvVars) { /** @type {Record} */ const defineMeta = {}; if (metaEnvVars) { 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 || []), ], }; }