diff --git a/.changeset/seven-chairs-hammer.md b/.changeset/seven-chairs-hammer.md new file mode 100644 index 0000000000..a76badd741 --- /dev/null +++ b/.changeset/seven-chairs-hammer.md @@ -0,0 +1,5 @@ +--- +"@pnpm/core": patch +--- + +Don't fail on skipped optional dependencies, when searching for dependencies that should be built. diff --git a/pkg-manager/core/src/install/index.ts b/pkg-manager/core/src/install/index.ts index 70b29624f5..1bc97b329c 100644 --- a/pkg-manager/core/src/install/index.ts +++ b/pkg-manager/core/src/install/index.ts @@ -1419,8 +1419,9 @@ const _installInContext: InstallFunction = async (projects, ctx, opts) => { await waitTillAllFetchingsFinish() const depsRequiringBuild: DepPath[] = [] if (opts.returnListOfDepsRequiringBuild) { - await Promise.all(Object.entries(dependenciesGraph).map(async ([depPath, { fetching }]) => { - const { files } = await fetching() + await Promise.all(Object.entries(dependenciesGraph).map(async ([depPath, node]) => { + if (node == null) return // We cannot detect if a skipped optional dependency requires build + const { files } = await node.fetching() if (files.requiresBuild) { depsRequiringBuild.push(depPath as DepPath) }