123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- const { build } = require("esbuild");
- const { sassPlugin } = require("esbuild-sass-plugin");
- const { externalGlobalPlugin } = require("esbuild-plugin-external-global");
- // Will be used later for treeshaking
- //const fs = require("fs");
- // const path = require("path");
- // function getFiles(dir, files = []) {
- // const fileList = fs.readdirSync(dir);
- // for (const file of fileList) {
- // const name = `${dir}/${file}`;
- // if (
- // name.includes("node_modules") ||
- // name.includes("config") ||
- // name.includes("package.json") ||
- // name.includes("main.js") ||
- // name.includes("index-node.ts") ||
- // name.endsWith(".d.ts")
- // ) {
- // continue;
- // }
- // if (fs.statSync(name).isDirectory()) {
- // getFiles(name, files);
- // } else if (
- // !(
- // name.match(/\.(sa|sc|c)ss$/) ||
- // name.match(/\.(woff|woff2|eot|ttf|otf)$/) ||
- // name.match(/locales\/[^/]+\.json$/)
- // )
- // ) {
- // continue;
- // } else {
- // files.push(name);
- // }
- // }
- // return files;
- // }
- const browserConfig = {
- entryPoints: ["index.tsx"],
- bundle: true,
- format: "esm",
- plugins: [
- sassPlugin(),
- externalGlobalPlugin({
- react: "React",
- "react-dom": "ReactDOM",
- }),
- ],
- splitting: true,
- loader: {
- ".woff2": "copy",
- ".ttf": "copy",
- },
- };
- const createESMBrowserBuild = async () => {
- // Development unminified build with source maps
- await build({
- ...browserConfig,
- outdir: "dist/browser/dev",
- sourcemap: true,
- chunkNames: "excalidraw-assets-dev/[name]-[hash]",
- define: {
- "import.meta.env": JSON.stringify({ DEV: true }),
- },
- });
- // production minified build without sourcemaps
- await build({
- ...browserConfig,
- outdir: "dist/browser/prod",
- minify: true,
- chunkNames: "excalidraw-assets/[name]-[hash]",
- define: {
- "import.meta.env": JSON.stringify({ PROD: true }),
- },
- });
- };
- // const BASE_PATH = `${path.resolve(`${__dirname}/..`)}`;
- // const filesinExcalidrawPackage = [
- // ...getFiles(`${BASE_PATH}/packages/excalidraw`),
- // `${BASE_PATH}/packages/utils/export.ts`,
- // `${BASE_PATH}/packages/utils/bbox.ts`,
- // ...getFiles(`${BASE_PATH}/public/fonts`),
- // ];
- // const filesToTransform = filesinExcalidrawPackage.filter((file) => {
- // return !(
- // file.includes("/__tests__/") ||
- // file.includes(".test.") ||
- // file.includes("/tests/") ||
- // file.includes("example")
- // );
- // });
- const rawConfig = {
- entryPoints: ["index.tsx"],
- bundle: true,
- format: "esm",
- plugins: [sassPlugin()],
- loader: {
- ".woff2": "copy",
- ".ttf": "copy",
- ".json": "copy",
- },
- packages: "external",
- };
- const createESMRawBuild = async () => {
- // Development unminified build with source maps
- await build({
- ...rawConfig,
- sourcemap: true,
- outdir: "dist/dev",
- define: {
- "import.meta.env": JSON.stringify({ DEV: true }),
- },
- });
- // production minified build without sourcemaps
- await build({
- ...rawConfig,
- minify: true,
- outdir: "dist/prod",
- define: {
- "import.meta.env": JSON.stringify({ PROD: true }),
- },
- });
- };
- createESMRawBuild();
- createESMBrowserBuild();
|