From 6bbd5b7dd6ff44ba4a3d998757373f84705d86fd Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Fri, 27 Mar 2026 19:01:02 +0100 Subject: [PATCH] fix: overwrite npm .cmd wrappers for @pnpm/exe on Windows npm creates .cmd wrappers that invoke bin entries through `node`, but @pnpm/exe bins are native executables, not JavaScript files. This causes pnpm commands to silently fail on Windows. --- dist/index.js | Bin 1432028 -> 1432280 bytes src/install-pnpm/run.ts | 29 +++++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/dist/index.js b/dist/index.js index 26f9903bc005d5e535fe5eb0f57ffa251f695e72..c988b695308c059cfbdde77ef9244934f0f21420 100644 GIT binary patch delta 10469 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 { addPath(path.join(pnpmHome, 'bin')) exportVariable('PNPM_HOME', pnpmHome) + // On Windows, npm creates .cmd wrappers that invoke bin entries through + // `node`, but @pnpm/exe bins are native executables — not JavaScript. + // Overwrite the wrappers to invoke the binaries directly. + if (process.platform === 'win32' && standalone) { + for (const name of ['pnpm', 'pnpx']) { + await writeFile( + path.join(pnpmHome, `${name}.cmd`), + `@"%~dp0\\..\\@pnpm\\exe\\${name}" %*\r\n`, + ) + } + } + // Ensure pnpm bin link exists — npm ci sometimes doesn't create it const pnpmBinLink = path.join(pnpmHome, 'pnpm') if (!existsSync(pnpmBinLink)) { @@ -57,8 +69,21 @@ export async function runSelfInstaller(inputs: Inputs): Promise { const targetVersion = readTargetVersion({ version, packageJsonFile }) if (targetVersion) { - const cmd = standalone ? bootstrapPnpm : process.execPath - const args = standalone ? ['self-update', targetVersion] : [bootstrapPnpm, 'self-update', targetVersion] + let cmd: string + let args: string[] + if (standalone) { + if (process.platform === 'win32') { + // Use the corrected .cmd wrapper on Windows + cmd = path.join(pnpmHome, 'pnpm.cmd') + args = ['self-update', targetVersion] + } else { + cmd = bootstrapPnpm + args = ['self-update', targetVersion] + } + } else { + cmd = process.execPath + args = [bootstrapPnpm, 'self-update', targetVersion] + } const exitCode = await runCommand(cmd, args, { cwd: dest }) if (exitCode !== 0) { return exitCode