From 6fb2e7815167e6b19006fc526d1a5d0f5f998787 Mon Sep 17 00:00:00 2001 From: Christian Klotz Date: Thu, 8 Oct 2026 17:26:34 +0200 Subject: [PATCH] fix: support npm 12 pack JSON output (#10680) fixes #10633 --- scripts/package-artifacts.mjs | 4 ++-- scripts/package-artifacts.test.mjs | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/package-artifacts.mjs b/scripts/package-artifacts.mjs index 5934b9faf..5d615dd32 100644 --- a/scripts/package-artifacts.mjs +++ b/scripts/package-artifacts.mjs @@ -31,10 +31,10 @@ function packPackages(packages, tarballDirectory) { stdio: ["inherit", "pipe", "inherit"], }); const parsed = JSON.parse(output); - if (!Array.isArray(parsed) || parsed.length !== 1 || !parsed[0]?.filename) { + const packed = Array.isArray(parsed) ? (parsed.length === 1 ? parsed[0] : undefined) : parsed?.[pkg.name]; + if (packed?.name !== pkg.name || typeof packed.filename !== "string") { throw new Error(`npm pack returned an unexpected result for ${pkg.name}`); } - const packed = parsed[0]; const originalPath = join(tarballDirectory, packed.filename); const contents = readFileSync(originalPath); diff --git a/scripts/package-artifacts.test.mjs b/scripts/package-artifacts.test.mjs index b5ec291f5..52aa7e1ee 100644 --- a/scripts/package-artifacts.test.mjs +++ b/scripts/package-artifacts.test.mjs @@ -15,6 +15,7 @@ function writePackage(directory, manifest, files) { } } +// #10633: Covers npm 12's package-keyed `npm pack --json` output only when npm 12 is on PATH. test("produces a verified, content-addressed artifact set", (t) => { const temporaryRoot = mkdtempSync(join(tmpdir(), "pi-package-artifacts-test-")); t.after(() => rmSync(temporaryRoot, { recursive: true, force: true }));