diff --git a/packages/nx/src/lock-file/npm.ts b/packages/nx/src/lock-file/npm.ts index cf86c697922cf..291a335c9b640 100644 --- a/packages/nx/src/lock-file/npm.ts +++ b/packages/nx/src/lock-file/npm.ts @@ -114,13 +114,21 @@ function mapPackages( if (lockfileVersion === 2) { const path = packagePath.split(/\/?node_modules\//).slice(1); - path.forEach((proj) => { - if (!dependency) { - dependency = dependencies[proj]; + let index = 1; + dependency = dependencies[path[0]]; + while (index < path.length) { + // the root lockfile might not match the nested project's lockfile + // given path might not exist in the root lockfile + if ( + dependency?.dependencies && + dependency.dependencies[path[index]] + ) { + dependency = dependency.dependencies[path[index]]; + index++; } else { - dependency = dependency.dependencies[proj]; + break; } - }); + } // if versions are same, no need to track it further if (dependency && value.version === dependency.version) { dependency = undefined;