From 87bb3827ae4061e2456ff891aee4ad791ebb859e Mon Sep 17 00:00:00 2001 From: Marcel Mraz Date: Fri, 14 Mar 2025 12:56:12 +0100 Subject: [PATCH] Add @excalidraw/common package --- excalidraw-app/vite.config.mts | 24 ++++++++----- packages/common/README.md | 19 +++++++++++ packages/common/package.json | 61 ++++++++++++++++++++++++++++++++++ packages/common/tsconfig.json | 6 ++++ packages/tsconfig.base.json | 6 ++-- scripts/buildPackage.js | 3 +- scripts/buildShared.js | 3 +- 7 files changed, 110 insertions(+), 12 deletions(-) create mode 100644 packages/common/README.md create mode 100644 packages/common/package.json create mode 100644 packages/common/tsconfig.json diff --git a/excalidraw-app/vite.config.mts b/excalidraw-app/vite.config.mts index 0534dce52..90771a335 100644 --- a/excalidraw-app/vite.config.mts +++ b/excalidraw-app/vite.config.mts @@ -23,6 +23,22 @@ export default defineConfig(({ mode }) => { envDir: "../", resolve: { alias: [ + { + find: /^@excalidraw\/common$/, + replacement: path.resolve(__dirname, "../packages/common/index.ts"), + }, + { + find: /^@excalidraw\/common\/(.*?)/, + replacement: path.resolve(__dirname, "../packages/common/$1"), + }, + { + find: /^@excalidraw\/element$/, + replacement: path.resolve(__dirname, "../packages/element/index.ts"), + }, + { + find: /^@excalidraw\/element\/(.*?)/, + replacement: path.resolve(__dirname, "../packages/element/$1"), + }, { find: /^@excalidraw\/excalidraw$/, replacement: path.resolve(__dirname, "../packages/excalidraw/index.tsx"), @@ -47,14 +63,6 @@ export default defineConfig(({ mode }) => { find: /^@excalidraw\/math\/(.*?)/, replacement: path.resolve(__dirname, "../packages/math/$1"), }, - { - find: /^@excalidraw\/element$/, - replacement: path.resolve(__dirname, "../packages/element/index.ts"), - }, - { - find: /^@excalidraw\/element\/(.*?)/, - replacement: path.resolve(__dirname, "../packages/element/$1"), - }, ], }, build: { diff --git a/packages/common/README.md b/packages/common/README.md new file mode 100644 index 000000000..76435e6ff --- /dev/null +++ b/packages/common/README.md @@ -0,0 +1,19 @@ +# @excalidraw/common + +## Install + +```bash +npm install @excalidraw/common +``` + +If you prefer Yarn over npm, use this command to install the Excalidraw utils package: + +```bash +yarn add @excalidraw/common +``` + +With PNPM, similarly install the package with this command: + +```bash +pnpm add @excalidraw/common +``` diff --git a/packages/common/package.json b/packages/common/package.json new file mode 100644 index 000000000..60ba30ddc --- /dev/null +++ b/packages/common/package.json @@ -0,0 +1,61 @@ +{ + "name": "@excalidraw/common", + "version": "0.1.0", + "type": "module", + "types": "./dist/types/common/index.d.ts", + "main": "./dist/prod/index.js", + "module": "./dist/prod/index.js", + "exports": { + ".": { + "types": "./dist/types/common/index.d.ts", + "development": "./dist/dev/index.js", + "production": "./dist/prod/index.js", + "default": "./dist/prod/index.js" + }, + "./*": { + "types": "./../common/dist/types/common/*" + } + }, + "files": [ + "dist/*" + ], + "description": "Excalidraw common functions, constants, etc.", + "publishConfig": { + "access": "public" + }, + "license": "MIT", + "keywords": [ + "excalidraw", + "excalidraw-utils" + ], + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all", + "not safari < 12", + "not kaios <= 2.5", + "not edge < 79", + "not chrome < 70", + "not and_uc < 13", + "not samsung < 10" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "dependencies": { + }, + "devDependencies": { + }, + "bugs": "https://github.com/excalidraw/excalidraw/issues", + "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" + } + } + \ No newline at end of file diff --git a/packages/common/tsconfig.json b/packages/common/tsconfig.json new file mode 100644 index 000000000..82cc2c237 --- /dev/null +++ b/packages/common/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "outDir": "./dist/types" + } +} diff --git a/packages/tsconfig.base.json b/packages/tsconfig.base.json index 18af8ec57..37ac9c2d6 100644 --- a/packages/tsconfig.base.json +++ b/packages/tsconfig.base.json @@ -12,14 +12,16 @@ "jsx": "react-jsx", "emitDeclarationOnly": true, "paths": { + "@excalidraw/common": ["./common/index.ts"], + "@excalidraw/element": ["./element/index.ts"], "@excalidraw/excalidraw": ["./excalidraw/index.tsx"], "@excalidraw/utils": ["./utils/index.ts"], "@excalidraw/math": ["./math/index.ts"], - "@excalidraw/element": ["./element/index.ts"], + "@excalidraw/common/*": ["./common/*"], + "@excalidraw/element/*": ["./element/*"], "@excalidraw/excalidraw/*": ["./excalidraw/*"], "@excalidraw/utils/*": ["./utils/*"], "@excalidraw/math/*": ["./math/*"], - "@excalidraw/element/*": ["./element/*"] } }, "exclude": ["**/*.test.*", "tests", "types", "examples", "dist"] diff --git a/scripts/buildPackage.js b/scripts/buildPackage.js index ac4419394..966d7e058 100644 --- a/scripts/buildPackage.js +++ b/scripts/buildPackage.js @@ -28,10 +28,11 @@ const getConfig = (outdir) => ({ assetNames: "[dir]/[name]", chunkNames: "[dir]/[name]-[hash]", alias: { + "@excalidraw/common": path.resolve(__dirname, "../packages/common"), + "@excalidraw/element": path.resolve(__dirname, "../packages/element"), "@excalidraw/excalidraw": path.resolve(__dirname, "../packages/excalidraw"), "@excalidraw/utils": path.resolve(__dirname, "../packages/utils"), "@excalidraw/math": path.resolve(__dirname, "../packages/math"), - "@excalidraw/element": path.resolve(__dirname, "../packages/element"), }, loader: { ".woff2": "file", diff --git a/scripts/buildShared.js b/scripts/buildShared.js index 62ebc3868..ef31a4876 100644 --- a/scripts/buildShared.js +++ b/scripts/buildShared.js @@ -14,10 +14,11 @@ const getConfig = (outdir) => ({ entryNames: "[name]", assetNames: "[dir]/[name]", alias: { + "@excalidraw/common": path.resolve(__dirname, "../packages/common"), + "@excalidraw/element": path.resolve(__dirname, "../packages/element"), "@excalidraw/excalidraw": path.resolve(__dirname, "../packages/excalidraw"), "@excalidraw/utils": path.resolve(__dirname, "../packages/utils"), "@excalidraw/math": path.resolve(__dirname, "../packages/math"), - "@excalidraw/element": path.resolve(__dirname, "../packages/element"), }, });