You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.7 KiB
80 lines
1.7 KiB
const path = require("path"); |
|
|
|
const { build } = require("esbuild"); |
|
const { sassPlugin } = require("esbuild-sass-plugin"); |
|
|
|
const { parseEnvVariables } = require("../packages/excalidraw/env.cjs"); |
|
|
|
const ENV_VARS = { |
|
development: { |
|
...parseEnvVariables(`${__dirname}/../.env.development`), |
|
DEV: true, |
|
}, |
|
production: { |
|
...parseEnvVariables(`${__dirname}/../.env.production`), |
|
PROD: true, |
|
}, |
|
}; |
|
|
|
// excludes all external dependencies and bundles only the source code |
|
const getConfig = (outdir) => ({ |
|
outdir, |
|
bundle: true, |
|
splitting: true, |
|
format: "esm", |
|
packages: "external", |
|
plugins: [sassPlugin()], |
|
target: "es2020", |
|
assetNames: "[dir]/[name]", |
|
chunkNames: "[dir]/[name]-[hash]", |
|
alias: { |
|
"@excalidraw/utils": path.resolve(__dirname, "../packages/utils/src"), |
|
}, |
|
external: ["@excalidraw/common", "@excalidraw/element", "@excalidraw/math"], |
|
loader: { |
|
".woff2": "file", |
|
}, |
|
}); |
|
|
|
function buildDev(config) { |
|
return build({ |
|
...config, |
|
sourcemap: true, |
|
define: { |
|
"import.meta.env": JSON.stringify(ENV_VARS.development), |
|
}, |
|
}); |
|
} |
|
|
|
function buildProd(config) { |
|
return build({ |
|
...config, |
|
minify: true, |
|
define: { |
|
"import.meta.env": JSON.stringify(ENV_VARS.production), |
|
}, |
|
}); |
|
} |
|
|
|
const createESMRawBuild = async () => { |
|
const chunksConfig = { |
|
entryPoints: ["index.tsx", "**/*.chunk.ts"], |
|
entryNames: "[name]", |
|
}; |
|
|
|
// development unminified build with source maps |
|
await buildDev({ |
|
...getConfig("dist/dev"), |
|
...chunksConfig, |
|
}); |
|
|
|
// production minified buld without sourcemaps |
|
await buildProd({ |
|
...getConfig("dist/prod"), |
|
...chunksConfig, |
|
}); |
|
}; |
|
|
|
(async () => { |
|
await createESMRawBuild(); |
|
})();
|
|
|