From aec59b9f6cc32926651dd1c631ef14127bec3036 Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Thu, 26 Mar 2026 20:24:03 +0100 Subject: [PATCH] fix: fall back to pnpm shim in same directory for self-update bin/ ensureAliasLinks had a hardcoded relative path to @pnpm/exe/pnpm which only works from node_modules/.bin/. In self-update's bin/ directory ($PNPM_HOME/bin/), that path doesn't resolve. Now falls back to using the pnpm shim in the same directory when the package path doesn't exist. --- dist/index.js | Bin 1429105 -> 1429209 bytes src/install-pnpm/ensureAliasLinks.test.ts | 25 ++++++++++++++++ src/install-pnpm/ensureAliasLinks.ts | 34 +++++++++++++++------- 3 files changed, 49 insertions(+), 10 deletions(-) diff --git a/dist/index.js b/dist/index.js index 30f73dda513f88ac3f7cc07cf4e8dcdbb7a75bbd..7b76f04ea1ff2be58806df3fd76f795a9a9c5ef1 100644 GIT binary patch delta 41703 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 me8$S89ofZNuE zo2=nDuJ74o{TPjE*lfMiP)t8>wg!V-tPfkc=AZqrb&%9r6dnODSp02R87y#O|FI0o zwB}*!KZWTnv?vn~FK^#s1-o(5j;+>k(@Onnlk&V(mmtk&jv2fGU=6vkpPxU$$A>OB#wC(_11NbW^7v&DAYDuZ+9ifnm~`$E-mdd0PXz5k3q5__q{#gMWRv?F~gd?kdwz z6fvhC8MV+Wk6Fj#1Le|VXfPzHWxMq-WbHfKt+jZz?s&pFm0>q*#S_*cN?p;74LI&R z(w>j=+t)!KFYU8VhDiNopLGmf-3MBU)~v}W)vZ~%Up>;S6A`@aihZkD14P|j%ni@x z+4TGK)<}=4sreN8ymb_oIRYy^`LcD;a(jy-zopMppj(#%ozz6|>s?r{bw$`<#03oa zuxO}=z}1ilq{Ggf?)nD#H7zbj-rT}pM0h`3y0f-c*a2#Ytf;RXLts^jQXZBnD$Nayl!g6d}$}5}4k77o?U=8{I zEYj369z`ms^#yAbMrS)p4rzq5@>ytnQ)d|OLuZ)V`7ORBUw~VZKXij^&Ze6VU=|M@u%?5U*^Aaq-c^}ZaV2@$?ia0(2_W~v zgVw)5w*PR@nxbZBg;!!C?Bi~5pJpxNko6@mwKcP9(tpiz0|mcs-4EsN!`H2m*z+jm!QmrVqBV5ph;<EtcW*)OH@L7m0cYI|PQQR@Bzmi(SW3FOp PJZEW{_U$q2_lExio-2;{ diff --git a/src/install-pnpm/ensureAliasLinks.test.ts b/src/install-pnpm/ensureAliasLinks.test.ts index f4b7d9a..d74fb10 100644 --- a/src/install-pnpm/ensureAliasLinks.test.ts +++ b/src/install-pnpm/ensureAliasLinks.test.ts @@ -125,6 +125,31 @@ describe('ensureAliasLinks', () => { }) }) + describe('self-update bin directory (pnpm shim in same dir)', () => { + it('creates aliases using pnpm shim in the same directory on unix', async () => { + // self-update creates a pnpm shim in $PNPM_HOME/bin/ — no package dir + await writeFile(path.join(binDir, 'pnpm'), '#!/bin/sh\nexec /path/to/real/pnpm "$@"\n', { mode: 0o755 }) + + await ensureAliasLinks(binDir, true, 'linux') + + const pnTarget = await readlink(path.join(binDir, 'pn')) + expect(pnTarget).toBe('pnpm') + + const pnxContent = await readFile(path.join(binDir, 'pnx'), 'utf8') + expect(pnxContent).toContain('pnpm') + expect(pnxContent).toContain('dlx') + }) + + it('creates .cmd shims using pnpm in same dir on windows', async () => { + await writeFile(path.join(binDir, 'pnpm'), 'pnpm binary') + + await ensureAliasLinks(binDir, true, 'win32') + + const cmdContent = await readFile(path.join(binDir, 'pn.cmd'), 'utf8') + expect(cmdContent).toContain('pnpm') + }) + }) + describe('overwrites existing broken shims', () => { it('replaces npm broken shim with symlink on unix', async () => { await setupStandaloneFixture(binDir) diff --git a/src/install-pnpm/ensureAliasLinks.ts b/src/install-pnpm/ensureAliasLinks.ts index 8221e3f..c636eb2 100644 --- a/src/install-pnpm/ensureAliasLinks.ts +++ b/src/install-pnpm/ensureAliasLinks.ts @@ -24,6 +24,28 @@ async function forceWriteFile (filePath: string, content: string, mode?: number) await writeFile(filePath, content, { mode }) } +/** + * Find the pnpm binary/shim relative to binDir. + * Checks the package directory first (node_modules/.bin/../@pnpm/exe/pnpm), + * then falls back to a pnpm shim in binDir itself (e.g. self-update's bin/). + */ +function findPnpmTarget (binDir: string, standalone: boolean): string | undefined { + const packageTarget = standalone + ? path.join('..', '@pnpm', 'exe', 'pnpm') + : path.join('..', 'pnpm', 'bin', 'pnpm.cjs') + + if (existsSync(path.resolve(binDir, packageTarget))) { + return packageTarget + } + + // self-update creates a pnpm shim in $PNPM_HOME/bin/ — use it directly + if (existsSync(path.join(binDir, 'pnpm'))) { + return 'pnpm' + } + + return undefined +} + /** * Create pn/pnpx/pnx alias links in the bin directory. * @@ -34,20 +56,12 @@ async function forceWriteFile (filePath: string, content: string, mode?: number) * pnpm self-update only replaces the pnpm binary — it doesn't update other * files in the package. The aliases are created by pointing pn directly to * the pnpm binary, and pnpx/pnx as scripts that exec "pnpm dlx". - * - * Only creates links when the pnpm binary exists in the expected location - * (i.e. the package has been installed). This is always true after bootstrap. */ export async function ensureAliasLinks (binDir: string, standalone: boolean, platform: NodeJS.Platform = process.platform): Promise { const isWindows = platform === 'win32' - // Determine the pnpm binary path relative to binDir - const pnpmTarget = standalone - ? path.join('..', '@pnpm', 'exe', 'pnpm') - : path.join('..', 'pnpm', 'bin', 'pnpm.cjs') - - const resolvedPnpm = path.resolve(binDir, pnpmTarget) - if (!existsSync(resolvedPnpm)) return + const pnpmTarget = findPnpmTarget(binDir, standalone) + if (!pnpmTarget) return if (isWindows) { // pn → calls pnpm directly