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 () => {