-
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
Project-references type check with --noEmit fails without built files #40431
Comments
A |
@RyanCavanaugh Thanks for the response. This functionality looks like what I want to achieve using If it's true, it means that the mechanism is already in place. It would be great to expose some flags for developers to use it. Please correct me if I confuse two unrelated features. Maybe @sheetalkamat could suggest something regarding use of this functionality via CLI. |
That PR is implemented by presenting the type checker with a virtual file system that builds .d.ts files on the fly; we can't enable it with a flag from |
@valerybugakov Did you ever find a way to solve the problem you've described here? |
@taylorkline, not the root cause. We partially solved the performance issue in our project by caching type check commands per Typescript project with |
I think this issue should be reconsidered, and opened again. It appears that not only do we get Project references are used in the Vite template for React and TypeScript which is very popular. Any execution of In addition, it is not efficient to run EDIT: Here is a reproduction of this issue which I created for the Vitest team. |
I'm confused — so is this a technical limitation (as the first quote implies), or a design/correctness limitation? |
I hope this topic gets revisited in the future. I just ran into this when I explored the idea of using project references to speed up type checking (via |
The thing is that project references put on the table some unique functionality like project boundaries, which can be extra useful in monorepo's workflow,however, it currently overlooks its potential due to the necessity of building files, leading to a performance degradation when compared to the --noEmit check. In the realm of modern monorepo development, there's a shift towards employing rapid compilers like SWC and esbuild with extracting type checking into a separate task. In such approaches, emitting any files through TypeScript (tsc) becomes unnecessary, further enhancing overall efficiency. I would really like to see someday this feature in your roadmap. |
Run into this many times, I believe it should be fixed. There should be no reason to need to emit declaration files if you are just trying to type check and have noEmit set, and the errors are quite confusing. |
TypeScript Version: ^4.0.2
Search Terms: "has not been built from source file", "project-references", "typecheck without emit"
Description
In monorepo with project-references it's not possible to use
tsc
for type check only without emitting files.Whereas calling
tsc -b
works without any issues. But there's no point in emitting files if we only need to perform type check of all related modules.It seems that is should be possible because of: #32028
Expected behavior:
tsc
with--noEmit
builds all referenced projects without emitting anything:Actual behavior:
It fails because no built files are found for referenced projects:
Playground Link:
repro repo
git clone https://github.com/valerybugakov/project-references-demo cd ./project-references-demo npm i npm run typecheck
Related Issues:
#25613
#25600
#30661 (comment)
The text was updated successfully, but these errors were encountered: