Include declaration files when resolving import specifiers #206
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.
When a project has declaration files (
.d.ts) added through e.g. theinclude: []configuration intsconfig.json, how to getts.resolveModuleName()take them into account?This PR includes a fixture that has
assets.d.ts:With a module importing another:
The result with Knip is an unresolved module, since I don't know how to properly include the declaration files in the TypeScript backend. Full repro:
The TypeScript backend is set up mainly in the constructor of the ProjectPrincipal class using a language service and compiler host in createHosts.ts with a custom resolveModuleNames function.
In this PR I have added some code and comments to indicate where the relevant bits are.
To rephrase my question: how to properly include declaration files not explicitly included through import statements?
(By the way, the current workaround in Knip is to let this slip through and eventually sanitize the import specifiers and ignore specifiers having an extension from this list.)