ItsWendell
ItsWendell16mo ago

TypeScript, Mono-Repositories and Internal Packages / Project References

I am getting quite frustrate with project references / internal projects and the resolving of types for TypeScript. To make it a bit smaller, let's say I have @acme/api-service which exports TRPC types and a Cloudflare Worker, I also have @acme/app which wants to consume this api service's TRPC types. In @acme/api-service I am exporting main / types fields in package.json, I am also using path aliases, and defining global types for it's environment in compilerOptions.types in tsconfig.json. When I don't use project references, and I run tsc --noEmit for type checking in the @acme/app folder I get errors about the missing global types, and the path aliases. When I use project references it seems like that kind of fixes it, but it looks like I need to continuously watch / build the declaration files of @acme/api-service while in development to not get these types out of sync. What is a good solution here, can I make sure that tsc reads the aliases / types from the tsconfig file from @acme/api-service? I am looking for a good setup for this scenario, where I can properly type check the whole mono repo during CI / CD, and making sure that the IDE stays fast since our repository is getting quite big.
1 Reply
Nick
Nick16mo ago
Do you have a hoisted node_modules folder? Using that can make a lot of issues with type dependencies go away There are other ways though like with references