Add pnpm recipe - #117
Open
marvin-w wants to merge 1 commit into
Open
Conversation
|
|
marvin-w
force-pushed
the
add-pnpm-recipe
branch
from
August 27, 2026 13:28
c7fa93d to
01f2d55
Compare
Builds pnpm from its self-contained linux-x64 release archive and injects a bin/pnpm wrapper so the artifact is consumed exactly like yarn's. Covers pnpm 11.0.0 and newer: v11.0.0 is the first release to publish pnpm-linux-x64.tar.gz. Earlier releases attach a bare pnpm-linux-x64 binary rather than an archive and are out of range. Verified end to end against 11.24.0 and 12.0.0. The npm registry package is not used, because it stopped being self-contained. Through pnpm 11 it bundled a complete dist/ tree, but as of pnpm 12 it is a ~1 MB stub: its preinstall script downloads a platform-native binary, and the bin/pnpm.mjs Corepack shim fetches that same binary on first run. Neither is available to a buildpack staging offline, so sourcing from npm would keep working right up until the first pnpm 12 build and then produce an artifact that only runs with network access. The release archive ships the native binary outright. The archive is flat, so nothing is stripped and a bin/pnpm wrapper is injected to provide the bin/<dep> layout. It resolves $0 through readlink -f because buildpacks symlink bin/ entries into their own bin directory, where the binary is not a sibling. InjectFile gains a mode-aware variant for this; the existing entry point keeps its 0644 default.
marvin-w
force-pushed
the
add-pnpm-recipe
branch
from
August 27, 2026 13:30
01f2d55 to
c1030d0
Compare
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Builds pnpm from its self-contained linux-x64 release archive and injects a bin/pnpm wrapper so the artifact is consumed exactly like yarn's.
The npm registry tarball is not used. As of pnpm 12 that package is a ~1 MB stub: its preinstall script downloads a platform-native binary, and the bin/pnpm.mjs Corepack shim fetches the same binary on first run. Neither is available to a buildpack staging offline, so repacking it would produce an artifact that only works with network access. The release archive ships the native binary outright.
The archive is flat, so nothing is stripped and a bin/pnpm wrapper is injected to provide the bin/ layout. It resolves $0 through readlink -f because buildpacks symlink bin/ entries into their own bin directory, where the binary is not a sibling. InjectFile gains a mode-aware variant for this; the existing entry point keeps its 0644 default.