diff --git a/packages/common/global.d.ts b/packages/common/global.d.ts index 103cff330..16ade7a7d 100644 --- a/packages/common/global.d.ts +++ b/packages/common/global.d.ts @@ -1,13 +1,3 @@ -interface Window { - EXCALIDRAW_EXPORT_SOURCE: string; -} - -interface ImportMetaEnv { - MODE: string; - DEV: string; - PROD: string; -} - -interface ImportMeta { - readonly env: ImportMetaEnv; -} +/// +import "@excalidraw/excalidraw/global"; +import "@excalidraw/excalidraw/css"; diff --git a/packages/common/package.json b/packages/common/package.json index 5ef41450f..1632157cc 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -60,6 +60,6 @@ "repository": "https://github.com/excalidraw/excalidraw", "scripts": { "gen:types": "rm -rf types && tsc", - "build:esm": "rm -rf dist && node ../../scripts/buildShared.js && yarn gen:types" + "build:esm": "rm -rf dist && node ../../scripts/buildBase.js && yarn gen:types" } } diff --git a/packages/element/global.d.ts b/packages/element/global.d.ts index ee7c72526..16ade7a7d 100644 --- a/packages/element/global.d.ts +++ b/packages/element/global.d.ts @@ -1,12 +1,3 @@ -interface ImportMetaEnv { - MODE: string; - DEV: string; - PROD: string; - - // To enable bounding box for text containers - VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX: string; -} - -interface ImportMeta { - readonly env: ImportMetaEnv; -} +/// +import "@excalidraw/excalidraw/global"; +import "@excalidraw/excalidraw/css"; diff --git a/packages/element/package.json b/packages/element/package.json index 8a04e415b..dfb2f2af6 100644 --- a/packages/element/package.json +++ b/packages/element/package.json @@ -58,6 +58,6 @@ "repository": "https://github.com/excalidraw/excalidraw", "scripts": { "gen:types": "rm -rf types && tsc", - "build:esm": "rm -rf dist && node ../../scripts/buildShared.js && yarn gen:types" + "build:esm": "rm -rf dist && node ../../scripts/buildBase.js && yarn gen:types" } } diff --git a/packages/excalidraw/vite-env.d.ts b/packages/excalidraw/vite-env.d.ts index ec22bcbf6..3c53906ab 100644 --- a/packages/excalidraw/vite-env.d.ts +++ b/packages/excalidraw/vite-env.d.ts @@ -24,6 +24,8 @@ interface ImportMetaEnv { // whether to disable live reload / HMR. Usuaully what you want to do when // debugging Service Workers. VITE_APP_DEV_DISABLE_LIVE_RELOAD: string; + // To enable bounding box for text containers + VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX: string; FAST_REFRESH: string; diff --git a/packages/math/package.json b/packages/math/package.json index 39181a3af..aef877f45 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -54,6 +54,6 @@ "repository": "https://github.com/excalidraw/excalidraw", "scripts": { "gen:types": "rm -rf types && tsc", - "build:esm": "rm -rf dist && node ../../scripts/buildShared.js && yarn gen:types" + "build:esm": "rm -rf dist && node ../../scripts/buildBase.js && yarn gen:types" } } diff --git a/packages/utils/package.json b/packages/utils/package.json index dd2299e41..ddda1e7d6 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -70,6 +70,6 @@ "repository": "https://github.com/excalidraw/excalidraw", "scripts": { "gen:types": "rm -rf types && tsc", - "build:esm": "rm -rf dist && node ../../scripts/buildShared.js && yarn gen:types" + "build:esm": "rm -rf dist && node ../../scripts/buildUtils.js && yarn gen:types" } } diff --git a/scripts/buildBase.js b/scripts/buildBase.js new file mode 100644 index 000000000..336b49823 --- /dev/null +++ b/scripts/buildBase.js @@ -0,0 +1,52 @@ +const path = require("path"); + +const { build } = require("esbuild"); + +// contains all dependencies bundled inside +const getConfig = (outdir) => ({ + outdir, + bundle: true, + format: "esm", + entryPoints: ["src/index.ts"], + entryNames: "[name]", + assetNames: "[dir]/[name]", + alias: { + "@excalidraw/common": path.resolve(__dirname, "../packages/common/src"), + "@excalidraw/element": path.resolve(__dirname, "../packages/element/src"), + "@excalidraw/excalidraw": path.resolve(__dirname, "../packages/excalidraw"), + "@excalidraw/math": path.resolve(__dirname, "../packages/math/src"), + "@excalidraw/utils": path.resolve(__dirname, "../packages/utils/src"), + }, +}); + +function buildDev(config) { + return build({ + ...config, + sourcemap: true, + define: { + "import.meta.env": JSON.stringify({ DEV: true }), + }, + }); +} + +function buildProd(config) { + return build({ + ...config, + minify: true, + define: { + "import.meta.env": JSON.stringify({ PROD: true }), + }, + }); +} + +const createESMRawBuild = async () => { + // development unminified build with source maps + await buildDev(getConfig("dist/dev")); + + // production minified build without sourcemaps + await buildProd(getConfig("dist/prod")); +}; + +(async () => { + await createESMRawBuild(); +})(); diff --git a/scripts/buildShared.js b/scripts/buildUtils.js similarity index 94% rename from scripts/buildShared.js rename to scripts/buildUtils.js index 01db34c24..1cf3ffbaa 100644 --- a/scripts/buildShared.js +++ b/scripts/buildUtils.js @@ -51,10 +51,10 @@ function buildProd(config) { const createESMRawBuild = async () => { // development unminified build with source maps - buildDev(getConfig("dist/dev")); + await buildDev(getConfig("dist/dev")); // production minified build without sourcemaps - buildProd(getConfig("dist/prod")); + await buildProd(getConfig("dist/prod")); }; (async () => {