-
Notifications
You must be signed in to change notification settings - Fork 12.5k
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
Feature Request: allow exclusion of node_modules when skipLibCheck is false #30511
Comments
It sounds like you're asking for the opposite - a mode for |
You're right, that wasn't the right phrasing (I was thinking of |
FWIW I think this ongoing issue is my biggest use case for this flag: Styled-Components automatically includes React-Native types, which duplicate Node types, so if you use Styled-Components and Node, you must |
Another use-case for this feature comes from nexus. Nexus has a novel "typegen" feature wherein based on user code a TS types file is generated and via interface-merging is able to imbue static guarantees on otherwise dynamic app code. We are currently working on making the default disk location for this typegen be Now, the motivation, for us, for this TS issue, is that nexus typegen would become weaker in the face of Hope that makes sense :) |
I completely agree with the author. I am not sure if it would make sense or whether this has any negative effect, but the only way I could make sure my declaration files didn't have any errors, was to rename all I faced many situations where I did have errors on my I might be missing something though. |
My use case for this is also related to the It does not harm my code, so I would like to ignore all those errors by setting Any updates on this? |
We discussed this today and decided that its fate is linked to that of #39231. Currently, we have a fairly coherent posture that |
I'd propose a new setting
which says that any Thoughts? |
What about this kind of types collection? https://github.com/sindresorhus/type-fest |
Those files are not exempt from the behavior I described. If you import from type-fest with the compiler option |
@RyanCavanaugh I don't have a lot of examples, but here are some:
But I think the battle to force people to generate typing for package is to be done here: https://twitter.com/colinhacks/status/1635427374530691074 Personally I love the direction that Bun and Deno enables. Having TS runtime give back to publishing small libraries the simplicity it was at the beginning with the power of TS for both authors and users. |
Then disable it on `npm run lint`. lib-check cannot exclude `node_modules`: * microsoft/TypeScript#30511
I think this is a generally reasonable posture, but if you have to do type augmentation, that needs to be done by hand and is 100% an exception to the whole "[.d.ts] are not inputs to be hand-authored" I don't have any particular interest running typechecking on .d.ts files that are emitted by |
I have also wished to have more nuance around I only wish to |
Coming here from #43140. I am trying to enable project references in Babel to speed up incremental type checking, and this is being a partial blocker. We cannot use
As a workaround, we are probably going to use
For this use case, {
"compilerOptions": {
"skipLibCheck": [
"./packages/*/lib/**/*.d.ts",
"./codemods/*/lib/**/*.d.ts",
"./eslint/*/lib/**/*.d.ts",
]
},
} I'd be happy to open a PR for it. |
That difference seems surprising. Do you have an active PR/branch with the above I could test? I was thinking it might be babel/babel#16416 but that doesn't actually seem to be it. |
Having `checkLib: false` in `tsconfig.conf` is a bad idea: it means that if we want to check `.d.ts` files, we need a separate invocation of the typescript compiler to do that. It also means that `.d.ts` files won't be checked in your editor by default. Our workaround for this in `test/static-code` only checks `cockpit.d.ts`, and we'll soon have other declaration files. We've been using `checkLib: false` as a crutch to avoid reporting errors against `node_modules/`. The relevant TypeScript issue is still unaddressed: microsoft/TypeScript#30511 Modify `test/static-code` to only report errors if errors were found on something outside of node_modules, but in that case, report all errors. We do this with two invocations of `tsc`, to keep things simple, but we'll only do the second invocation if we're reporting errors. To keep things speedy, we turn on "incremental" mode (which writes a cache file to speed things up). `.gitignore` that. It now takes only ~2s to do an incremental check in the "no errors" case. By default, `tsc` outputs a very nice format that shows the exact content of errors, but this doesn't work by default in `test/static-code` because we capture the output before displaying it. Detect if we're running on a TTY (or if `FORCE_COLOR=1` as from our workflows) and enable the "pretty" output in that case.
Having `checkLib: false` in `tsconfig.conf` is a bad idea: it means that if we want to check `.d.ts` files, we need a separate invocation of the typescript compiler to do that. It also means that `.d.ts` files won't be checked in your editor by default. Our workaround for this in `test/static-code` only checks `cockpit.d.ts`, and we'll soon have other declaration files. We've been using `checkLib: false` as a crutch to avoid reporting errors against `node_modules/`. The relevant TypeScript issue is still unaddressed: microsoft/TypeScript#30511 Modify `test/static-code` to only report errors if errors were found on something outside of node_modules, but in that case, report all errors. We do this with two invocations of `tsc`, to keep things simple, but we'll only do the second invocation if we're reporting errors. To keep things speedy, we turn on "incremental" mode (which writes a cache file to speed things up). `.gitignore` that. It now takes only ~2s to do an incremental check in the "no errors" case. By default, `tsc` outputs a very nice format that shows the exact content of errors, but this doesn't work by default in `test/static-code` because we capture the output before displaying it. Detect if we're running on a TTY (or if `FORCE_COLOR=1` as from our workflows) and enable the "pretty" output in that case.
Having `checkLib: false` in `tsconfig.conf` is a bad idea: it means that if we want to check `.d.ts` files, we need a separate invocation of the typescript compiler to do that. It also means that `.d.ts` files won't be checked in your editor by default. Our workaround for this in `test/static-code` only checks `cockpit.d.ts`, and we'll soon have other declaration files. We've been using `checkLib: false` as a crutch to avoid reporting errors against `node_modules/`. The relevant TypeScript issue is still unaddressed: microsoft/TypeScript#30511 Modify `test/static-code` to only report errors if errors were found on something outside of node_modules, but in that case, report all errors. We do this with two invocations of `tsc`, to keep things simple, but we'll only do the second invocation if we're reporting errors. To keep things speedy, we turn on "incremental" mode (which writes a cache file to speed things up). `.gitignore` that. It now takes only ~2s to do an incremental check in the "no errors" case. By default, `tsc` outputs a very nice format that shows the exact content of errors, but this doesn't work by default in `test/static-code` because we capture the output before displaying it. Detect if we're running on a TTY (or if `FORCE_COLOR=1` as from our workflows) and enable the "pretty" output in that case.
I fully agree with this. Another (admitted niche) user case: I'm using https://github.com/Tencent/puerts for my game It's a Javascript/Typescript runtime for Unity. To access C# runtime from Typescript, it generated Obviously, it would cause some unresolvable symbols in those generated |
Having `checkLib: false` in `tsconfig.conf` is a bad idea: it means that if we want to check `.d.ts` files, we need a separate invocation of the typescript compiler to do that. It also means that `.d.ts` files won't be checked in your editor by default. Our workaround for this in `test/static-code` only checks `cockpit.d.ts`, and we'll soon have other declaration files. We've been using `checkLib: false` as a crutch to avoid reporting errors against `node_modules/`. The relevant TypeScript issue is still unaddressed: microsoft/TypeScript#30511 Modify `test/static-code` to only report errors if errors were found on something outside of node_modules, but in that case, report all errors. We do this with two invocations of `tsc`, to keep things simple, but we'll only do the second invocation if we're reporting errors. To keep things speedy, we turn on "incremental" mode (which writes a cache file to speed things up). `.gitignore` that. It now takes only ~2s to do an incremental check in the "no errors" case. By default, `tsc` outputs a very nice format that shows the exact content of errors, but this doesn't work by default in `test/static-code` because we capture the output before displaying it. Detect if we're running on a TTY (or if `FORCE_COLOR=1` as from our workflows) and enable the "pretty" output in that case.
Hello @RyanCavanaugh @andrewbranch , is there any intention to review these types of cases? There are a lot of issues referencing these behaviours but nothing concrete is achieved. There are a lot of use cases for having this property skipping folder patterns, something like There are some big gaps in the explanations of how tsconfig files actually work. I absolutely believe that more than 90% of the community believes that an There are problems when dealing with typescript projects from different environments (or intentions), such as whether I want to verify source, tests, storybook, e2e, build or node files. I'm almost sure people think that adding a tsconfig.node.json We must do something |
My 2 centsI probably riding the bandwagon here, but I want to add my thoughts as someone who runs into this issue in every single TS project and has yet to find a suitable solution. I've always enabled Type checking someone else's filesIt makes no sense to me that I'd wanna check someone else's types when it's their job to check their own types before releasing a version of their library. I have to have trust that the library I'm importing is both tested and functional; I can't make an assumption that they did everything wrong because fixing it isn't my job, and not something I can easily control. I'm sure there's a great argument for why you need to check someone else's types in your library similar to the argument for why it's important to re-bundle someone else's production library code because they might've used a different As unintuitive as it may seem, How I got hereThe entire reason I found this thread is because I'm trying to figure out a way to have local |
@KevinGhadyani-Okta Use |
@thorn0 declare global is just for modules that use window object. It shouldnt be used arbitrarily |
Search Terms
skipLibCheck node_modules
,skipLibCheck
All I've found is this lonely SO post. As that user notes, there are a lot of posts around Angular and excluding node_modules from typechecking on one dimension or another, but they all end up suggesting turning on
skipLibCheck
.Suggestion
Allow the exclusion of files in node_modules (regardless of their inclusion in the Project) from lib checking when
skipLibCheck
is set tofalse
.Use Cases
I want to be able to typecheck my own
.d.ts
files without being responsible for all of the types my dependencies import. My local configuration isstrict
and it may be that the types provided in my packages were not intendedstrict
ly, or other configurations in my local JSON run up against the way other packages have written theirs.I am assuming the counterargument is that it's all-or-nothing, but then why do
.ts
files that rely on.d.ts
files typecheck fine when my.d.ts
files are not typechecked? Can't that behavior be applied to definitions in node_modules?Examples
Not sure how to show an example here. I would like to be able to run
tsc --noEmit
on my codebase and get errors for my own definitions files without having a bunch of noise from unfixable errors innode_modules/@types
etc.Checklist
My suggestion meets these guidelines:
If implemented as some additional flag?
I think so?
The text was updated successfully, but these errors were encountered: