Add resolvePeerDependenciesFrom
option.
#4
Merged
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.
Pass this option if you know the base directory (the dir containing the
package.json
) that should be used as the starting point of peer dependency resolution.For example, given the following dependencies:
parent
depends onchild
andsibling
child
has a peer dependency onsibling
packagechild
usesvalidate-peer-dependencies
to confirm thatsibling
is providedMost of the time in the Node ecosystem you can not actually know the path to
parent
(it could be hoisted / deduplicated to any number of possible locations), but in some (some what special) circumstances you can. For example, in theember-cli
addon ecosystem an addon is instantiated with access to the root path of the package that included it (parent
in the example above).The main benefit of specifying
resolvePeerDependenciesFrom
is that while locally developingchild
you mightnpm link
/yarn link
it intoparent
manually. In that case the default behavior (using the directory that containschild
'spackage.json
) is not correct! When linking (and not specifyingresolvePeerDependenciesFrom
) the invocation tovalidatePeerDependencies
would always find the peer dependencies (even if theparent
didn't have them installed) because the locally linked copy ofchild
would have specified them in itsdevDependencies
and therefore the peer dependency would be resolvable fromchild
's on disk location.Here is an example of what usage by an ember-cli addon would look like: