Skip to content

Commit a123410

Browse files
arcanisisaacs
authored andcommitted
Implements peerDependenciesMeta
PR-URL: #224 Credit: @arcanis Close: #224 Reviewed-by: @isaacs
1 parent e8fb2a1 commit a123410

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

lib/install/deps.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -711,6 +711,12 @@ function resolveWithNewModule (pkg, tree, log, next) {
711711
})
712712
}
713713

714+
var isOptionalPeerDep = exports.isOptionalPeerDep = function (tree, pkgname) {
715+
if (!tree.package.peerDependenciesMeta) return
716+
if (!tree.package.peerDependenciesMeta[pkgname]) return
717+
return !!tree.package.peerDependenciesMeta[pkgname].optional
718+
}
719+
714720
var validatePeerDeps = exports.validatePeerDeps = function (tree, onInvalid) {
715721
if (!tree.package.peerDependencies) return
716722
Object.keys(tree.package.peerDependencies).forEach(function (pkgname) {
@@ -719,7 +725,7 @@ var validatePeerDeps = exports.validatePeerDeps = function (tree, onInvalid) {
719725
var spec = npa.resolve(pkgname, version)
720726
} catch (e) {}
721727
var match = spec && findRequirement(tree.parent || tree, pkgname, spec)
722-
if (!match) onInvalid(tree, pkgname, version)
728+
if (!match && !isOptionalPeerDep(tree, pkgname)) onInvalid(tree, pkgname, version)
723729
})
724730
}
725731

0 commit comments

Comments
 (0)