From 3eec7b0da486d89523396ba1743d695e5a831b16 Mon Sep 17 00:00:00 2001 From: HiranoMasaaki Date: Sat, 14 Feb 2026 11:05:59 +0000 Subject: [PATCH] fix: externalize ink, react, dotenv to eliminate CJS from ESM bundles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move ink, react, dotenv, and @perstack/runtime to dependencies in both perstack and create-expert so tsup externalizes them instead of bundling. This eliminates CJS require("path") errors from signal-exit, stack-utils, and dotenv when running the published ESM bundles. Bundle sizes: create-expert 4MB→145KB, perstack similarly reduced. Co-Authored-By: Claude Opus 4.6 --- .changeset/externalize-cjs-deps.md | 6 ++++++ apps/create-expert/package.json | 4 ++++ apps/create-expert/tsup.config.ts | 1 - apps/perstack/package.json | 3 +++ apps/perstack/tsup.config.ts | 1 - knip.json | 6 +++++- pnpm-lock.yaml | 21 +++++++++++++++++++++ 7 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 .changeset/externalize-cjs-deps.md diff --git a/.changeset/externalize-cjs-deps.md b/.changeset/externalize-cjs-deps.md new file mode 100644 index 00000000..866db0fc --- /dev/null +++ b/.changeset/externalize-cjs-deps.md @@ -0,0 +1,6 @@ +--- +"perstack": patch +"create-expert": patch +--- + +fix: externalize ink, react, dotenv to eliminate CJS from ESM bundles diff --git a/apps/create-expert/package.json b/apps/create-expert/package.json index 1320fdb5..6f65993c 100644 --- a/apps/create-expert/package.json +++ b/apps/create-expert/package.json @@ -24,7 +24,11 @@ }, "dependencies": { "@perstack/core": "workspace:*", + "@perstack/runtime": "workspace:*", "commander": "^14.0.2", + "dotenv": "^17.2.3", + "ink": "^6.6.0", + "react": "^19.2.3", "smol-toml": "^1.6.0" }, "devDependencies": { diff --git a/apps/create-expert/tsup.config.ts b/apps/create-expert/tsup.config.ts index 42ce0ac3..a0d09ce0 100644 --- a/apps/create-expert/tsup.config.ts +++ b/apps/create-expert/tsup.config.ts @@ -7,5 +7,4 @@ export default defineConfig({ entry: { "bin/cli": "bin/cli.ts", }, - external: ["react-devtools-core"], }) diff --git a/apps/perstack/package.json b/apps/perstack/package.json index 4df5522a..c1e9c239 100644 --- a/apps/perstack/package.json +++ b/apps/perstack/package.json @@ -25,6 +25,9 @@ "@perstack/core": "workspace:*", "@perstack/runtime": "workspace:*", "commander": "^14.0.2", + "dotenv": "^17.2.3", + "ink": "^6.6.0", + "react": "^19.2.3", "smol-toml": "^1.6.0" }, "devDependencies": { diff --git a/apps/perstack/tsup.config.ts b/apps/perstack/tsup.config.ts index 69a987b3..2d9c52ff 100644 --- a/apps/perstack/tsup.config.ts +++ b/apps/perstack/tsup.config.ts @@ -7,7 +7,6 @@ export const cliConfig: Options = { entry: { "bin/cli": "bin/cli.ts", }, - external: ["react-devtools-core"], } export default defineConfig(cliConfig) diff --git a/knip.json b/knip.json index f078d88d..0d166568 100644 --- a/knip.json +++ b/knip.json @@ -15,7 +15,11 @@ ], "workspaces": { "apps/perstack": { - "entry": ["bin/cli.ts", "src/**/*.ts"] + "entry": ["bin/cli.ts", "src/**/*.ts"], + "ignoreDependencies": ["dotenv", "ink", "react"] + }, + "apps/create-expert": { + "ignoreDependencies": ["@perstack/runtime", "dotenv", "ink", "react"] }, "packages/tui-components": { "ignore": ["src/components/index.ts", "src/utils/index.ts"] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e44d3c5f..4412e5f0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -102,9 +102,21 @@ importers: '@perstack/core': specifier: workspace:* version: link:../../packages/core + '@perstack/runtime': + specifier: workspace:* + version: link:../runtime commander: specifier: ^14.0.2 version: 14.0.2 + dotenv: + specifier: ^17.2.3 + version: 17.2.3 + ink: + specifier: ^6.6.0 + version: 6.6.0(@types/react@19.2.9)(react@19.2.3) + react: + specifier: ^19.2.3 + version: 19.2.3 smol-toml: specifier: ^1.6.0 version: 1.6.0 @@ -173,6 +185,15 @@ importers: commander: specifier: ^14.0.2 version: 14.0.2 + dotenv: + specifier: ^17.2.3 + version: 17.2.3 + ink: + specifier: ^6.6.0 + version: 6.6.0(@types/react@19.2.9)(react@19.2.3) + react: + specifier: ^19.2.3 + version: 19.2.3 smol-toml: specifier: ^1.6.0 version: 1.6.0