From 61fd13c55f5e69a9d8b32dd0d74b08870783bcce Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Thu, 30 Dec 2021 00:26:01 +0100 Subject: 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). --- config/esbuild-config.js | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 config/esbuild-config.js (limited to 'config/esbuild-config.js') 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 @@ +// @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 || []), + ], + }; +} -- cgit v1.2.3-54-g00ecf