-
Notifications
You must be signed in to change notification settings - Fork 23
Add caching based on file content and external references #752
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
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
plus drive-by fix in linter to avoid unnecessary work if no rules are enabled
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Checklist
Overview of change
Adds a new CI option
--cache
. If enabled, it looks for a cache filetsconfig.fimbullintercache
and tries to reuse the results from that file. If any file that affects global scope (or dependencies thereof) have changed, or TypeScript version or compilerOptions changed, the cache is discarded entirely.For each file it checks if the file or the linter configuration didn't change and all external references resolve to the same files with identical content as last time. It handles ambient modules and module augmentations like compiler does.
If compilerOption
assumeChangeOnlyAffectDirectDependencies
is enabled, the cache also stops at the first level of dependencies.After linting the updated cache is written back to disk.
If
--fix
is enabled, fixing a file invalidates the results from other files linted before if those files may be affected by the change. These results are still reported in CLI output, but not included in the new cache. The affected files will be linted again on the next run.If the cache was generated without
--fix
and is then run again with--fix
, fixes are applied from cache without initially linting the file again.The cache contains only paths relative to the tsconfig.json. That means you can check the cache file into VCS so CI and your collegues can benefit from a warm linter start.
This does change the language service plugin.
The following situations (currently) don't work well with the cache:
Program
that tracks random access to source files