Repository navigation
Publish split tarballs with pnpm instead of npm - #224
Draft
kevindetry-milaboratories wants to merge 1 commit into
Draft
kevindetry-milaboratories wants to merge 1 commit into
kevindetry-milaboratories wants to merge 1 commit into
Conversation
kevindetry-milaboratories
force-pushed
the
add-setup-pnpm-action
branch
2 times, most recently
from
October 26, 2026 11:04
3891e19 to
4bfcf4a
Compare
`pack-unpublished` and `publish-tarballs` no longer call npm. A repo
that pins `devEngines.packageManager` to pnpm fails `npm` in its root
(EBADDEVENGINES), and `pnpm/setup` installs Node without npm.
- Registry lookups: `pnpm config get` and `pnpm view --json`. "Not
found" comes from the JSON error code. pnpm 9 and 10 drop the whole
`.npmrc` when a `${VAR}` in it is unset, so that now fails with a
clear error.
- Upload: `pnpm publish <tarball>` with OIDC trusted publishing.
Credentials come from a generated auth file through
`PNPM_CONFIG_NPMRC_AUTH_FILE`. `--tag` only for `publishConfig.tag`.
- `publish-tarballs` installs pnpm with `pnpm/setup` (input
`pnpm-version`, default 12.14.0, at least 12). Inputs
`node-version` and `npm-version` are removed.
- The tarball check reads the manifest as pnpm 12 does and refuses
archives where tar readers can disagree. The `tar` dependency goes.
- Packed manifest checks cover what pnpm 12 reads: a top-level `tag`
must be the upload tag, `@scope:registry` is refused, `registry`
must match.
- The test workflow runs the suite with the pnpm of `publish-tarballs`.
kevindetry-milaboratories
force-pushed
the
pnpm-split-publish
branch
from
October 26, 2026 11:05
289f109 to
7e57211
Compare
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.
pack-unpublishedandpublish-tarballsno longer call npm. Repos that pindevEngines.packageManagerto pnpm failnpmin the repo root (EBADDEVENGINES), andpnpm/setupinstalls Node without npm.pnpm config getandpnpm view --json. "Not found" comes from the JSON error code: the pnpm 11+ codes, orE404when pnpm 9/10 passviewto npm. Behavior change: pnpm 9 and 10 ignore the whole.npmrcwhen a${VAR}in it is unset, and the scope mapping is lost with it. npm kept the literal text and went on, so the lookup now fails with a clear error.pnpm publish <tarball>: native in pnpm 11+, with OIDC trusted publishing and provenance. Credentials come from a generated auth file throughPNPM_CONFIG_NPMRC_AUTH_FILE.--tagis passed only forpublishConfig.tag; pnpm defaults tolatest.publish-tarballsinstalls pnpm with the sharedsetup-pnpmaction (version,working-directory: runner.temp, no cache). The new inputpnpm-versiondefaults to12.14.0. The upload stops before the first package when pnpm is older than 12. The inputsnode-versionandnpm-versionare removed; no known caller passes them.setup-pnpmchangesPATHandPNPM_HOMEfor the rest of the caller's job. Itspnpm/setupstep is a node24 action: self-hosted runners that callpublish-tarballs(the build jobs ofnode-matrix-pnpmandnode-docker-simple-fast-pnpm) need a runner version with node24.tar, lastpackage/package.json, first gzip member, at most 2 GiB unpacked). It refuses archives where tar readers can disagree. Thetardependency is removed.tagmust be the tag of the upload,@scope:registryis refused, andregistrymust match the manifest entry.publish-tarballs. In that step,REQUIRE_REAL_PNPM=1makes a missing pnpm 12 fail the run instead of skipping the real-pnpm tests.