Skip to content

Commit a87f42a

Browse files
clydinKeen Yee Liau
authored andcommitted
fix(@schematics/update): only update peer dependency if out of range
1 parent 8cc0a11 commit a87f42a

File tree

1 file changed

+14
-3
lines changed
  • packages/schematics/update/update

1 file changed

+14
-3
lines changed

packages/schematics/update/update/index.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,7 @@ function _addPeerDependencies(
717717
packages: Map<string, VersionRange>,
718718
allDependencies: ReadonlyMap<string, VersionRange>,
719719
npmPackageJson: NpmRepositoryPackageJson,
720+
npmPackageJsonMap: Map<string, NpmRepositoryPackageJson>,
720721
logger: logging.LoggerApi,
721722
): void {
722723
const maybePackage = packages.get(npmPackageJson.name);
@@ -737,9 +738,19 @@ function _addPeerDependencies(
737738
const error = false;
738739

739740
for (const [peer, range] of Object.entries(packageJson.peerDependencies || {})) {
740-
if (!packages.has(peer)) {
741-
packages.set(peer, range as VersionRange);
741+
if (packages.has(peer)) {
742+
continue;
743+
}
744+
745+
const peerPackageJson = npmPackageJsonMap.get(peer);
746+
if (peerPackageJson) {
747+
const peerInfo = _buildPackageInfo(tree, packages, allDependencies, peerPackageJson, logger);
748+
if (semver.satisfies(peerInfo.installed.version, range)) {
749+
continue;
750+
}
742751
}
752+
753+
packages.set(peer, range as VersionRange);
743754
}
744755

745756
if (error) {
@@ -860,7 +871,7 @@ export default function(options: UpdateSchema): Rule {
860871
lastPackagesSize = packages.size;
861872
npmPackageJsonMap.forEach((npmPackageJson) => {
862873
_addPackageGroup(tree, packages, allDependencies, npmPackageJson, logger);
863-
_addPeerDependencies(tree, packages, allDependencies, npmPackageJson, logger);
874+
_addPeerDependencies(tree, packages, allDependencies, npmPackageJson, npmPackageJsonMap, logger);
864875
});
865876
} while (packages.size > lastPackagesSize);
866877

0 commit comments

Comments
 (0)