-
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
Add option to include default typeRoots when overriding typeRoots #30855
Comments
We need this exact same thing for the exact same reasons. I was looking for a way to say, "In addition to the normal @types folders resolution that Typescript does, please also add the following folders." There is no way to do this that I am aware of. |
This would be useful for me too. Specifically, if in addition to the default @types org I could specify an additional org to check. I would like to include some custom global utility types in each of my typescript projects that extends a particular tsconfig. These global utility types would be available as an npm package at a path “@myorg/global-types”. I would include this package as a dev dependency. I would then configure the tsconfig typeroots to look first in “@myorg” then fallback to “@types”. I would then add “global-types” to the types array in the tsconfig and all would be well. I’m also open to being told if I’m missing something. Right now, I use my yarn magic to fake like my types are in @types even tho they are not. This works, but would break in the event that I used one of my packages (which are all git submodules) without the mono-repo package surrounding it - which will eventually be a problem. |
Another way to support this could be to add some kind of glob support to
|
@dummdidumm it seems a bit over complicated... I have never seen that type of glob. But this PR could be quite easy, in the code, they are looking after each ancestor node_modules like the node behavior, just adding a condition here and modifying the config schema. "includeDefaultTypeRoots" is a bit long (but "allowSyntheticDefaultImports" too) so maybe "extendsTypeRoots" ? |
This is now a much more serious issue with the introduction of Pnp. Without this feature, there is no way to include additional typeRoots on top of the pnp roots without overriding them completely. |
I have a fix for this on my fork, but I cannot PR it due to this issue not being on the backlog: https://github.com/jonrimmer/TypeScript/tree/include-default-type-roots-option @RyanCavanaugh What feedback are you waiting for on this issue? |
Running into the same issue when we want to use a private NPM Types module in a Serverless mono-repo |
+1, I'm shipping a typescript source repository and it would be easier if I could specify the types it defines internally rather than needing to build + load the types separately |
Bump. @RyanCavanaugh - How can any of us be helpful here in moving this forward? |
This would be a very helpful feature. |
+1, This would really be useful. |
@RyanCavanaugh Any updates on this? |
nth-ing that this is a big problem when using yarn pnp in a monorepo. |
Any news on this? |
I would highly appreciate this feature too ... |
same 👍 |
same 👍 |
+1, awaiting this good feature |
same 👍 |
Can you please stop typing no value comments like "+1"? It certainly doesn't help the development process of this issue and you're sending useless notifications, emails to people who subscribed to this thread and waiting actual feedback. Use 👍🏻 reaction instead. |
@RyanCavanaugh pinging you as you originally added the labels for this issue. Could you consider re-evaluating this and maybe adding it to the backlog? My case is for using pnpm workspaces where I have |
For people who have this issue in Monorepo context, you can "put" your package in a
and it'll be picked up by typescript automatically without having to override the |
That's a fantastic idea @s0ber to avoid having to define Pro tip: if you intend on applying these types globally in your monorepo, do not build the This is what I have in {
"name": "@types/my-monorepo-global-types",
"main": "./src/index.d.ts",
"types": "./src/index.d.ts"
} And these are the contents of my
|
I am trying to add custom Playwright matchers to a SvelteKit repo. The docs say to add Using This means I somehow have to be aware when SvelteKit has changed what it generates so I can re-copy it. Brittle. Why on earth, if tsconfig.json allows The solution from @s0ber is great for monorepo users, but not much use for anyone else. Please could we have a works-for-everyone fix for this? (Update: I have just noticed that I can include |
Search Terms
default typeRoots
Suggestion
By default, when
typeRoots
is unspecified, TypeScript looks fornode_modules/@types
in the project's directory and all ancestor directories, similar to Node's module resolution algorithm. This is covered in the tsconfig.json docs and is implemented here.When specifying
typeRoots
in tsconfig.json, this overrides the defaulttypeRoots
entirely. You can include"node_modules/@types"
in yourtypeRoots
array, but that does not include ancestor directories.This is a feature request to provide a way, such as a new option, to include the default type roots in addition to the overridden values.
Use Cases
The primary use case is within a repository using Yarn workspaces. Yarn hoists npm packages to the workspace root. This means you can end up with a directory hierarchy like this:
If
tsconfig.json
wants to includenode_modules/@types
in the workspace root (in addition to other type declaration directories specified intypeRoots
), it needs to look like this:Examples
This feature request is a quality-of-life improvement to instead allow for:
The default value of this option would be false and would not be a breaking change.
Checklist
My suggestion meets these guidelines:
The text was updated successfully, but these errors were encountered: