From 8e055d2f05f42bdecf94fa77d739f606c02b091e Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Thu, 8 Aug 2024 14:04:47 +0200 Subject: [PATCH] fix(core): don't fail on skipped optional deps, when calculating depsRequiringBuild (#8390) --- .changeset/seven-chairs-hammer.md | 5 +++++ pkg-manager/core/src/install/index.ts | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 .changeset/seven-chairs-hammer.md 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) }