-
Notifications
You must be signed in to change notification settings - Fork 828
Description
Versions
tsc: 5.9.3tsgo(@typescript/native-preview): 7.0.0-dev.20260206.1
Description
When a child tsconfig.json uses "extends" to inherit from a parent, and the parent defines include globs, tsc and tsgo produce completely different output directory structures because they resolve the inherited include paths differently.
Note: This is a regression — this was working correctly with tsgo a few weeks ago.
Setup
monorepo-root/
├── tsconfig.json # parent config
├── call-ai/...
├── prompts/...
├── use-vibes/...
└── vibes.diy/pkg/
└── tsconfig.json # child config (extends ../../tsconfig.json)
Parent tsconfig.json (at root):
{
"compilerOptions": {
"target": "es2022",
"module": "nodenext",
"moduleResolution": "nodenext",
"outDir": "./dist",
"noEmit": true,
"sourceMap": true
},
"include": [
"call-ai/**/*",
"use-vibes/**/*",
"vibes.diy/**/*",
"prompts/**/*"
]
}Child tsconfig.json (at vibes.diy/pkg/):
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "./dist",
"sourceMap": true,
"noEmit": false
}
}Steps to reproduce
From vibes.diy/pkg/:
rm -rf dist && pnpm exec tsc 2>/dev/null; ls dist/
# Output: call-ai prompts use-vibes vibes.diy
rm -rf dist && pnpm exec tsgo 2>/dev/null; ls dist/
# Output: app drizzle.d1-local-backend.config.js ... stories workersExpected behavior
tsgo should produce the same output directory structure as tsc — resolving inherited include globs relative to the parent config's directory (monorepo root), producing dist/{call-ai,prompts,use-vibes,vibes.diy}.
Actual behavior
tsc resolves the inherited include globs relative to the parent config's directory (monorepo root), producing dist/{call-ai,prompts,use-vibes,vibes.diy}.
tsgo appears to resolve them relative to the child config's directory (vibes.diy/pkg/), producing a flat structure with only local files (app/, stories/, workers/, config files).