8000 Ensure packages that consume workspace packages are always bumped on … · mattetti/rushstack@9351922 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9351922

Browse files
committed
Ensure packages that consume workspace packages are always bumped on dependency bump
1 parent f92a2f9 commit 9351922

File tree

6 files changed

+431
-19
lines changed

6 files changed

+431
-19
lines changed

apps/rush-lib/src/logic/PublishUtilities.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -642,25 +642,32 @@ export class PublishUtilities {
642642
dependencies[change.packageName] &&
643643
!PublishUtilities._isCyclicDependency(allPackages, parentPackageName, change.packageName)
644644
) {
645-
const requiredVersion: string = new DependencySpecifier(
645+
const requiredVersion: DependencySpecifier = new DependencySpecifier(
646646
change.packageName,
647647
dependencies[change.packageName]
648-
).versionSpecifier;
648+
);
649+
const isAnyWorkspaceVersion: boolean =
650+
requiredVersion.specifierType === DependencySpecifierType.Workspace &&
651+
requiredVersion.versionSpecifier === '*';
649652
const alwaysUpdate: boolean =
650-
!!prereleaseToken && prereleaseToken.hasValue && !allChanges.hasOwnProperty(parentPackageName);
653+
(!!prereleaseToken && prereleaseToken.hasValue && !allChanges.hasOwnProperty(parentPackageName)) ||
654+
isAnyWorkspaceVersion;
651655

652656
// If the version range exists and has not yet been updated to this version, update it.
653-
if (requiredVersion !== change.newRangeDependency || alwaysUpdate) {
657+
if (requiredVersion.versionSpecifier !== change.newRangeDependency || alwaysUpdate) {
654658
let changeType: ChangeType;
655659
// Propagate hotfix changes to dependencies
656660
if (change.changeType === ChangeType.hotfix) {
657661
changeType = ChangeType.hotfix;
658662
} else {
659663
// Either it already satisfies the new version, or doesn't.
660664
// If not, the downstream dep needs to be republished.
661-
changeType = semver.satisfies(change.newVersion!, requiredVersion)
662-
? ChangeType.dependency
663-
: ChangeType.patch;
665+
// The downstream dep will also need to be republished if using `workspace:*` as this will publish
666+
// as the exact version.
667+
changeType =
668+
semver.satisfies(change.newVersion!, requiredVersion.versionSpecifier) && !isAnyWorkspaceVersion
669+
? ChangeType.dependency
670+
: ChangeType.patch;
664671
}
665672

666673
const hasChanged: boolean = PublishUtilities._addChange(

0 commit comments

Comments
 (0)
0