Skip to content

5.5.0 inheriting outDir: ${configDir} does not automatically exclude it from compilation #58327

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Knagis opened this issue Apr 26, 2024 · 3 comments Β· Fixed by #58335
Closed

5.5.0 inheriting outDir: ${configDir} does not automatically exclude it from compilation #58327

Knagis opened this issue Apr 26, 2024 · 3 comments Β· Fixed by #58335
Assignees
Labels
Needs Investigation This issue needs a team member to investigate its status.

Comments

@Knagis
Copy link
Contributor

Knagis commented Apr 26, 2024

πŸ”Ž Search Terms

configDir

πŸ•— Version & Regression Information

This is likely bug with feature introduced in 5.5.0

⏯ Playground Link

https://github.com/Knagis/importHelpers-5.5.0/tree/exclude-lib

πŸ’» Code

tsconfig.base.json

{
    "compilerOptions": {
        "outDir": "${configDir}/lib",
    },
}

packages/foo/tsconfig.json

{
    "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.

@Knagis Knagis closed this as completed Apr 26, 2024
@Knagis
Copy link
Contributor Author

Knagis commented Apr 26, 2024

Updated/simplified reproduction repo, now it reproduces the stated error as is and uncommenting outDir in the derived tsconfig.json prevents it.

@Knagis Knagis reopened this Apr 26, 2024
@Knagis
Copy link
Contributor Author

Knagis commented Apr 26, 2024

tsc --showConfig with 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
Copy link
Contributor Author

Knagis commented 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 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Needs Investigation This issue needs a team member to investigate its status.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants