mirror of
				https://github.com/excalidraw/excalidraw.git
				synced 2025-10-31 19:04:35 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			124 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const { build } = require("esbuild");
 | |
| const { sassPlugin } = require("esbuild-sass-plugin");
 | |
| 
 | |
| const fs = require("fs");
 | |
| 
 | |
| const browserConfig = {
 | |
|   entryPoints: ["index.ts"],
 | |
|   bundle: true,
 | |
|   format: "esm",
 | |
|   plugins: [sassPlugin()],
 | |
| };
 | |
| 
 | |
| // Will be used later for treeshaking
 | |
| 
 | |
| // 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") ||
 | |
| //       name.endsWith(".md")
 | |
| //     ) {
 | |
| //       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 createESMBrowserBuild = async () => {
 | |
|   // Development unminified build with source maps
 | |
|   const browserDev = await build({
 | |
|     ...browserConfig,
 | |
|     outdir: "dist/browser/dev",
 | |
|     sourcemap: true,
 | |
|     metafile: true,
 | |
|     define: {
 | |
|       "import.meta.env": JSON.stringify({ DEV: true }),
 | |
|     },
 | |
|   });
 | |
|   fs.writeFileSync(
 | |
|     "meta-browser-dev.json",
 | |
|     JSON.stringify(browserDev.metafile),
 | |
|   );
 | |
| 
 | |
|   // production minified build without sourcemaps
 | |
|   const browserProd = await build({
 | |
|     ...browserConfig,
 | |
|     outdir: "dist/browser/prod",
 | |
|     minify: true,
 | |
|     metafile: true,
 | |
|     define: {
 | |
|       "import.meta.env": JSON.stringify({ PROD: true }),
 | |
|     },
 | |
|   });
 | |
|   fs.writeFileSync(
 | |
|     "meta-browser-prod.json",
 | |
|     JSON.stringify(browserProd.metafile),
 | |
|   );
 | |
| };
 | |
| 
 | |
| const rawConfig = {
 | |
|   entryPoints: ["index.ts"],
 | |
|   bundle: true,
 | |
|   format: "esm",
 | |
|   packages: "external",
 | |
|   plugins: [sassPlugin()],
 | |
| };
 | |
| 
 | |
| // const BASE_PATH = `${path.resolve(`${__dirname}/..`)}`;
 | |
| // const filesinExcalidrawPackage = getFiles(`${BASE_PATH}/packages/utils`);
 | |
| 
 | |
| // const filesToTransform = filesinExcalidrawPackage.filter((file) => {
 | |
| //   return !(
 | |
| //     file.includes("/__tests__/") ||
 | |
| //     file.includes(".test.") ||
 | |
| //     file.includes("/tests/") ||
 | |
| //     file.includes("example")
 | |
| //   );
 | |
| // });
 | |
| const createESMRawBuild = async () => {
 | |
|   // Development unminified build with source maps
 | |
|   const rawDev = await build({
 | |
|     ...rawConfig,
 | |
|     outdir: "dist/dev",
 | |
|     sourcemap: true,
 | |
|     metafile: true,
 | |
|     define: {
 | |
|       "import.meta.env": JSON.stringify({ DEV: true }),
 | |
|     },
 | |
|   });
 | |
|   fs.writeFileSync("meta-raw-dev.json", JSON.stringify(rawDev.metafile));
 | |
| 
 | |
|   // production minified build without sourcemaps
 | |
|   const rawProd = await build({
 | |
|     ...rawConfig,
 | |
|     outdir: "dist/prod",
 | |
|     minify: true,
 | |
|     metafile: true,
 | |
|     define: {
 | |
|       "import.meta.env": JSON.stringify({ PROD: true }),
 | |
|     },
 | |
|   });
 | |
|   fs.writeFileSync("meta-raw-prod.json", JSON.stringify(rawProd.metafile));
 | |
| };
 | |
| 
 | |
| createESMRawBuild();
 | |
| createESMBrowserBuild();
 | 
