fix(js): identify correct circular dependecies (#29759)

This commit is contained in:
Emily Xiong 2025-02-19 01:13:08 -08:00 committed by GitHub
parent 51a0bae574
commit 1047991200
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 7 additions and 2 deletions

View File

@ -191,6 +191,7 @@ describe('nx release - independent projects', () => {
{project-name} 📄 Resolved the current version as 0.0.0 from {project-name}/package.json {project-name} 📄 Resolved the current version as 0.0.0 from {project-name}/package.json
{project-name} 📄 Using the provided version specifier "999.9.9-package.3". {project-name} 📄 Using the provided version specifier "999.9.9-package.3".
{project-name} New version 999.9.9-package.3 written to {project-name}/package.json {project-name} New version 999.9.9-package.3 written to {project-name}/package.json
{project-name} Applying new version 999.9.9-package.3 to 1 package which depends on {project-name}
"name": "@proj/{project-name}", "name": "@proj/{project-name}",

View File

@ -619,7 +619,7 @@ To fix this you will either need to add a package.json file at that location, or
const allDependentProjects = Object.values(localPackageDependencies) const allDependentProjects = Object.values(localPackageDependencies)
.flat() .flat()
.filter((localPackageDependency) => { .filter((localPackageDependency) => {
return localPackageDependency.target === project.name; return localPackageDependency.target === projectName;
}); });
const includeTransitiveDependents = const includeTransitiveDependents =
@ -643,10 +643,14 @@ To fix this you will either need to add a package.json file at that location, or
const dependentProjectsOutsideCurrentBatch = []; const dependentProjectsOutsideCurrentBatch = [];
// Track circular dependencies using value of project1:project2 // Track circular dependencies using value of project1:project2
const circularDependencies = new Set<string>(); const circularDependencies = new Set<string>();
const projectsDependOnCurrentProject =
localPackageDependencies[projectName]?.map(
(localPackageDependencies) => localPackageDependencies.target
) ?? [];
for (const dependentProject of allDependentProjects) { for (const dependentProject of allDependentProjects) {
// Track circular dependencies (add both directions for easy look up) // Track circular dependencies (add both directions for easy look up)
if (dependentProject.target === projectName) { if (projectsDependOnCurrentProject.includes(dependentProject.source)) {
circularDependencies.add( circularDependencies.add(
`${dependentProject.source}:${dependentProject.target}` `${dependentProject.source}:${dependentProject.target}`
); );