fix(typescript): correctly resolve filenames of declaration files for output.file
#1728
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.
Rollup Plugin Name:
@rollup/plugin-typescript
This PR contains:
Are tests included?
Breaking Changes?
If yes, then include "BREAKING CHANGES:" in the first commit message body, followed by a description of what is breaking.
List any relevant issue numbers:
Description
Currently, when
output.file
is specified instead ofoutput.dir
, the filename for emitting declaration files withthis.emitFile
is resolved incorrectly. This means that given adeclarationDir
that is outside of the bundle output directory (which isoutput.dir || dirname(output.file!)
), the declarations will still be generated inside the bundle, albeit in a location not actually matchingdeclarationDir
that does not respect the absolute file path generated by typescript.Whereas when using
output.dir
,declarationDir
is actually validated and filenames for declarations are resolved correctly.For example, with
output.file = 'some-path/index.js'
anddeclarationDir = 'types'
, the declaration files will be generated atsome-path/types/index.d.ts
, instead oftypes/index.d.ts
which is the correct location (but invalid as it would be output the bundle directory). Whenoutput.dir = 'some-path'
is used instead, validation fails as expected.This can be fixed by just using
dirname(output.file)
in place ofoutput.dir
whenoutput.file
is specified, and including a validation check thatdeclarationDir
is valid when usingoutput.file
.