fix(release): ensure updateDependents only works for independent projects (#28283)

<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

<!-- If this is a particularly complex change or feature addition, you
can request a dedicated Nx release for this pull request branch. Mention
someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they
will confirm if the PR warrants its own release for testing purposes,
and generate it for you if appropriate. -->

## Current Behavior
<!-- This is the behavior we have today -->

## Expected Behavior
<!-- This is the behavior we should expect with the changes in this PR
-->

## Related Issue(s)
<!-- Please link the issue being fixed so it gets closed when this is
merged. -->

Fixes #
This commit is contained in:
Austin Fahsl 2024-10-03 20:54:44 -05:00 committed by GitHub
parent d5c452194f
commit 7c0e34400e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -94,7 +94,8 @@ Valid values are: ${validReleaseVersionPrefixes
// Sort the projects topologically if update dependents is enabled
// TODO: maybe move this sorting to the command level?
const projects =
updateDependents === 'never'
updateDependents === 'never' ||
options.releaseGroup.projectsRelationship !== 'independent'
? options.projects
: sortProjectsTopologically(options.projectGraph, options.projects);
const projectToDependencyBumps = new Map<string, any>();
@ -417,6 +418,7 @@ To fix this you will either need to add a package.json file at that location, or
if (!specifier) {
if (
updateDependents !== 'never' &&
options.releaseGroup.projectsRelationship === 'independent' &&
projectToDependencyBumps.has(projectName)
) {
// No applicable changes to the project directly by the user, but one or more dependencies have been bumped and updateDependents is enabled
@ -541,6 +543,7 @@ To fix this you will either need to add a package.json file at that location, or
if (!specifier) {
if (
updateDependents !== 'never' &&
options.releaseGroup.projectsRelationship === 'independent' &&
projectToDependencyBumps.has(projectName)
) {
// No applicable changes to the project directly by the user, but one or more dependencies have been bumped and updateDependents is enabled
@ -601,7 +604,9 @@ To fix this you will either need to add a package.json file at that location, or
return localPackageDependency.target === project.name;
});
const includeTransitiveDependents = updateDependents !== 'never';
const includeTransitiveDependents =
updateDependents !== 'never' &&
options.releaseGroup.projectsRelationship === 'independent';
const transitiveLocalPackageDependents: LocalPackageDependency[] = [];
if (includeTransitiveDependents) {
for (const directDependent of allDependentProjects) {
@ -656,7 +661,10 @@ To fix this you will either need to add a package.json file at that location, or
}
// If not always updating dependents (when they don't already appear in the batch itself), print a warning to the user about what is being skipped and how to change it
if (updateDependents === 'never') {
if (
updateDependents === 'never' ||
options.releaseGroup.projectsRelationship !== 'independent'
) {
if (dependentProjectsOutsideCurrentBatch.length > 0) {
let logMsg = `⚠️ Warning, the following packages depend on "${project.name}"`;
const reason =
@ -689,7 +697,8 @@ To fix this you will either need to add a package.json file at that location, or
currentVersion,
newVersion: null, // will stay as null in the final result in the case that no changes are detected
dependentProjects:
updateDependents === 'auto'
updateDependents === 'auto' &&
options.releaseGroup.projectsRelationship === 'independent'
? allDependentProjects
: dependentProjectsInCurrentBatch,
};
@ -723,7 +732,8 @@ To fix this you will either need to add a package.json file at that location, or
if (allDependentProjects.length > 0) {
const totalProjectsToUpdate =
updateDependents === 'auto'
updateDependents === 'auto' &&
options.releaseGroup.projectsRelationship === 'independent'
? allDependentProjects.length +
transitiveLocalPackageDependents.length -
// There are two entries per circular dep
@ -855,7 +865,10 @@ To fix this you will either need to add a package.json file at that location, or
});
}
if (updateDependents === 'auto') {
if (
updateDependents === 'auto' &&
options.releaseGroup.projectsRelationship === 'independent'
) {
for (const dependentProject of dependentProjectsOutsideCurrentBatch) {
if (
options.specifierSource === 'version-plans' &&