From b65a1daa15e224dae442d60255415db32ab78007 Mon Sep 17 00:00:00 2001 From: Vincent Koc <25068+vincentkoc@users.noreply.github.com> Date: Wed, 17 Jun 2026 11:28:14 +0800 Subject: [PATCH] fix(workspace-plan): install build dependencies --- src/workspace-plan.js | 1 + test/workspace-plan.test.js | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/workspace-plan.js b/src/workspace-plan.js index 4848888..8dca3d0 100644 --- a/src/workspace-plan.js +++ b/src/workspace-plan.js @@ -361,6 +361,7 @@ function requiredCapabilitiesFor(entrypoint, packageSummary = {}) { } if (blocker.code === "build-required") { capabilities.add("build"); + capabilities.add("dependency-install"); } if (blocker.code === "ts-loader-required") { capabilities.add("ts-loader"); diff --git a/test/workspace-plan.test.js b/test/workspace-plan.test.js index e03fb8f..7850b86 100644 --- a/test/workspace-plan.test.js +++ b/test/workspace-plan.test.js @@ -56,8 +56,8 @@ test("workspace plan maps blocked entrypoints to opt-in install/build/capture st assert.equal(plan.optIn.env, "TEST_EXEC=1"); assert.equal(plan.summary.entrypointCount, 2); assert.equal(plan.summary.artifactStepCount, 2); - assert.equal(plan.summary.installStepCount, 1); - assert.equal(plan.summary.auditStepCount, 1); + assert.equal(plan.summary.installStepCount, 2); + assert.equal(plan.summary.auditStepCount, 2); assert.equal(plan.summary.pruneDevWorkspaceDependencyStepCount, 1); assert.equal(plan.summary.buildStepCount, 1); assert.equal(plan.summary.captureStepCount, 2); @@ -87,6 +87,9 @@ test("workspace plan maps blocked entrypoints to opt-in install/build/capture st const buildEntrypoint = plan.fixtures[0].entrypoints.find((item) => item.packageName === "build-fixture"); assert.ok(buildEntrypoint); assert.ok(buildEntrypoint.requiredCapabilities.includes("build")); + assert.ok(buildEntrypoint.requiredCapabilities.includes("dependency-install")); + assert.ok(buildEntrypoint.steps.some((step) => step.kind === "install" && step.command === "npm install --ignore-scripts")); + assert.ok(buildEntrypoint.steps.some((step) => step.kind === "audit" && step.command.includes("npm audit --json"))); assert.ok(buildEntrypoint.steps.some((step) => step.kind === "build" && step.command === "npm run build")); assert.match(renderWorkspacePlanMarkdown(plan), /Entrypoint Workspaces/); });