You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
5.5.0 inheriting outDir: ${configDir} does not automatically exclude it from compilation #58327
{"extends": "../../tsconfig.base.json","compilerOptions": {"composite": true,// "outDir": "lib" // uncomment to make it work},"include": ["**/*.ts"],}
🙁 Actual behavior
When using outDir: "${configDir}/lib" in the base config, compiling this project results in
error TS5055: Cannot write file 'C:/Code/tslibissue/packages/foo/lib/src/index.d.ts' because it would overwrite input file.
🙂 Expected behavior
Project compiles without errors
Additional information about the issue
If i specify outDir: "lib" or even outDir: "${configDir}/lib" in the derived config, the project compiles without errors as the lib folder seems to be automatically excluded from the compilation.
ok, so the issue isn't really configDir - but that the outDir from base config isn't ever applied as exclude rule. if i specify outDir: "packages/foo/lib" in the root, the same issue appears. Just that before ${configDir} it never made sense to not have outDir specified in the derived config file.
for my added confusion, for some reason, with 5.5.0 it doesn't seem enough to specify outDir in the derived config anymore in my monorepo, i have to instead explicitly, manually add the folder to exclude list, which wasn't needed in 5.4.5. but maybe this is some cache playing a role, even though i build with -f
Activity
Knagis commentedon Apr 26, 2024
Updated/simplified reproduction repo, now it reproduces the stated error as is and uncommenting
outDirin the derived tsconfig.json prevents it.Knagis commentedon Apr 26, 2024
tsc --showConfigwith inherited outDir:{ "compilerOptions": { "outDir": "./lib", "composite": true, "declaration": true, "incremental": true }, "files": [ "./lib/src/index.d.ts", "./lib/src/index.spec.d.ts", "./src/index.spec.ts", "./src/index.ts" ], "include": [ "**/*.ts" ] }the same with outDir defined in the derived config:
{ "compilerOptions": { "outDir": "./lib", "composite": true, "declaration": true, "incremental": true }, "files": [ "./src/index.spec.ts", "./src/index.ts" ], "include": [ "**/*.ts" ], "exclude": [ "lib" ] }Knagis commentedon Apr 26, 2024
ok, so the issue isn't really configDir - but that the outDir from base config isn't ever applied as exclude rule. if i specify
outDir: "packages/foo/lib"in the root, the same issue appears. Just that before${configDir}it never made sense to not haveoutDirspecified in the derived config file.for my added confusion, for some reason, with 5.5.0 it doesn't seem enough to specify outDir in the derived config anymore in my monorepo, i have to instead explicitly, manually add the folder to exclude list, which wasn't needed in 5.4.5. but maybe this is some cache playing a role, even though i build with
-fExclude outDir and declarationDir even if they come from extended config
Exclude outDir and declarationDir even if they come from extended config