fix(dts-plugin): prevent sibling package path prefix false positive in getDependentFiles#4804
Open
hpello wants to merge 1 commit into
Open
Conversation
|
✅ Deploy Preview for module-federation-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
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
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.
Description
getDependentFilesfilters the TypeScript program's source files to only keep those that live under the project'srootDir:rootDiris an absolute path with no trailing separator, e.g./path/to/packages/business-package. ThestartsWithcheck is a plain string prefix match, which means any sibling package whose name shares the same prefix will incorrectly pass the filter.Concrete example from our monorepo
'/…/packages/business-package-api/src/index.ts'.startsWith('/…/packages/business-package')→trueAll source files from
business-package-apiend up infilesToCompile. The generated temp tsconfig then lists them underfilesbut withrootDirset topackages/business-package/. TypeScript considers those files outsiderootDirand emits their.d.tsdeclarations next to their source files instead of intooutDir— polluting the sibling package'ssrc/directory with untracked build artefacts.Fix
Append
'/'torootDirbefore thestartsWithcheck so the comparison is a true path-prefix match rather than a string-prefix match.Note:
path.sepis not used here because TypeScript normalises all file paths to forward slashes internally regardless of OS, so hardcoding'/'is both correct and portable.Related Issue
No existing issue — discovered while migrating a Module Federation producer from Vite to Rsbuild and enabling DTS generation in build mode.
Types of changes
Checklist