-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
fix(resolution) Eliminate "missing peerDep" warning when dep exists at root level. #5088
Merged
Conversation
This file contains 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
…pkg#4743 Added a failing unit test to reproduce issue yarnpkg#4743. It seems that if a peerDep exists deeper in the dep tree than where it is included, yarn will output a earning, even if that peerDep is satisfied by the same library included shallower in the tree, or at the root level.
…multiple levels. A missing peerDep warning was being issued if the exact same pattern was a deep transitive dep and a direct dep. This was due to only the first request for a pattern being added to the list of requests that peerDep was checking. Now all references are tracked. Also fixed a logic error in Warn where a dep would be reported multiple times. yarnpkg#4743
This change will decrease the build size from 10.39 MB to 10.26 MB, a decrease of 132.82 KB (1%)
|
…t local vs ci. Now assert with Remove snapshot test of "yarn why" due to different output local vs ci. Now assert with actual object value comparison.
arcanis
approved these changes
Jan 15, 2018
Awesome 👍 |
agoldis
added a commit
to agoldis/yarn
that referenced
this pull request
Feb 2, 2018
…readdir_files * upstream/master: (34 commits) feat(upgrade, add): Separately log added/upgraded dependencies (yarnpkg#5227) feat(publish): Publish command uses publishConfig.access in package.json (yarnpkg#5290) fix(CLI): Use process exit instead of exitCode for node < 4 (yarnpkg#5291) feat(cli): error on missing workspace directory (yarnpkg#5206) (yarnpkg#5222) feat: better error when package is not found (yarnpkg#5213) Allow scoped package as alias source (yarnpkg#5229) fix(cli): Use correct directory for upgrade-interactive (yarnpkg#5272) nohoist baseline implementation (yarnpkg#4979) 1.4.1 1.4.0 Show current version, when new version is not supplied on "yarn publish" (yarnpkg#4947) fix(install): use node-gyp from homebrew npm (yarnpkg#4994) Fix transient symlinks overriding direct ones v2 (yarnpkg#5016) fix(auth): Fixes authentication conditions and logic with registries (yarnpkg#5216) chore(package): move devDeps to appropriate place (yarnpkg#5166) fix(resolution) Eliminate "missing peerDep" warning when dep exists at root level. (yarnpkg#5088) fix(cli): improve guessing of package names that contain a dot (yarnpkg#5102) (yarnpkg#5135) feat(cli): include notice with license when generating disclaimer (yarnpkg#5072) (yarnpkg#5111) feat(cli): group by license in licenses list (yarnpkg#5074) (yarnpkg#5110) feat(cli): improve error message when file resolver can't find file (yarnpkg#5134) (yarnpkg#5145) ...
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.
fixes #4743
Summary
Previously, the logic in
PackageResolver
wouldreturn
if a pattern was already resolved (ignore duplicate patterns). However, the check forpeerDependencies
needs to check all references.This was causing an issue where if there was a peerDep on
depZ
, anddepZ
was resolved from a deeply nested transitive dep first, possibly> depA > depB > depC > depZ
. And alsodepZ
was directly included from package.json> depZ
that second shallowPackageReference
would not be tracked.peerDep resolution would then only see the reference from
> depA > depB > depC > depZ
which may be too far down the tree to satisfy the dependency, thus a missing peerDep warning was issued.Fortunately the underlying data structure seems to already support the concept of multiple
PackageReferences
for a dependency, so I changed the PackageResolver logic to always callPackageRequest .find()
which already had its own duplication check, so now adds allPackageReferences
to the data structure. This causes the peerDep resolution process to check all included references to the dependency.Additionally, this exposed a problem with
yarn why
where if a package with the exact same pattern was added at the root package.json, and by transitive deps,yarn why
would duplicateSpecified in "dependencies"
output, like:This was fixed by making a unique set of dependency patterns in the
why
command code instead of allowing duplicates.Test plan
Added tests for both of the above bugs.