Files
ComfyUI_frontend/packages/extension-api/tsconfig.json
Connor Byrne 14349fe23f fix(ext-api/pkg): build emits both .d.ts and .js via Option C (D17)
Resolves CodeRabbit findings F-12143-1, F-12143-3, F-12143-7.

Per D17-pkg2-build-strategy ADR: package now builds via Vite library
mode + vite-plugin-dts, dropping the inconsistent rootDir restriction
and the --emitDeclarationOnly flag. Vite resolves @/* aliases against
the canonical surface in main app src/extension-api/, externalizes vue
as a peer dep, and bundles to a single 3.95 kB build/index.js.
vite-plugin-dts emits the per-file .d.ts closure under build/ with
@/* imports rewritten to relative paths.

The original tsc-only plan in #12143 was unworkable because tsc does
not rewrite path aliases — emitted JS would have unresolvable @/...
imports at runtime. Vite library mode is the smallest deviation that
satisfies PKG3 acceptance ('emits BOTH .d.ts + .js') while preserving
'the barrel is the source of truth in main app src/extension-api/'
intent in packages/extension-api/AGENTS.md.

Verified:
  pnpm build emits build/index.js (3.95 kB) + build/.../*.d.ts tree
  node -e "import('./build/index.js')" returns real functions for
    defineNodeExtension, defineExtension, onNodeMounted, onNodeRemoved
  synthetic downstream consumer importing NodeHandle/WidgetHandle
    types and runtime fns type-checks under tsc --noEmit
  pnpm lint && pnpm format:check && pnpm knip pass

Also adds packages/extension-api/vite.config.mts to the eslint
allowDefaultProject list so the typed lint rules can resolve it.

See decisions/D17-pkg2-build-strategy.md in the cross-repo workspace
for the full options analysis (A: types-only — rejected; B: vendor
sources — deferred to post-#11939; C: build from main app sources —
chosen).
2026-05-21 14:01:37 -07:00

9 lines
143 B
JSON

{
"extends": "./tsconfig.build.json",
"compilerOptions": {
"noEmit": true,
"declaration": false,
"declarationMap": false
}
}