mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-27 02:20:19 -04:00
* refactor: rename @pnpm/exe platform packages to @pnpm/exe.<platform>-<arch>[-musl] Aligns pnpm's own published platform artifacts with the one naming convention the rest of the codebase already uses (`process.platform` values plus an explicit `-musl` libc suffix), matching what `pnpm pack-app`, `pnpm add --os/--cpu/--libc`, `supportedArchitectures.os`, and Node.js tarball names all already settled on. Package renames: - @pnpm/linux-x64 -> @pnpm/exe.linux-x64 - @pnpm/linux-arm64 -> @pnpm/exe.linux-arm64 - @pnpm/linuxstatic-x64 -> @pnpm/exe.linux-x64-musl (new dir) - @pnpm/linuxstatic-arm64 -> @pnpm/exe.linux-arm64-musl - @pnpm/macos-x64 -> @pnpm/exe.darwin-x64 - @pnpm/macos-arm64 -> @pnpm/exe.darwin-arm64 - @pnpm/win-x64 -> @pnpm/exe.win32-x64 - @pnpm/win-arm64 -> @pnpm/exe.win32-arm64 GitHub release asset names follow suit (`pnpm-linuxstatic-x64.tar.gz` -> `pnpm-linux-x64-musl.tar.gz`, `pnpm-macos-*` -> `pnpm-darwin-*`, `pnpm-win-*` -> `pnpm-win32-*`). Internal artifact directories under `pnpm/artifacts/` renamed to match, which drops the awkward mixed naming between target and directory. The umbrella package `@pnpm/exe` keeps its name so that `pnpm self-update` from v10 and any `npm i -g @pnpm/exe` scripts continue to resolve. Platform children can be renamed freely because npm/pnpm filter optional deps by each child's `os`/`cpu`/`libc` manifest fields, not by package names. Also updates: - `@pnpm/exe`'s `setup.js` (preinstall) and the self-updater's `linkExePlatformBinary` to look up the platform package by the new scheme, using `detect-libc` to append `-musl` on musl Linux hosts. - `.meta-updater` optional-dependency list for @pnpm/exe. - `copy-artifacts.ts` target list and Windows detection prefix. - cspell wordlist (drops `linuxstatic`; it's no longer used anywhere). Final transition publishes of the old package names (pointing at the new ones so direct pins keep resolving) are a release-engineering step handled separately. Refs #11314. * chore: keep "linuxstatic" in cspell wordlist for changeset references * test(pack-app rename): cover the musl branch of platform-package-name lookup Copilot flagged that the musl -> -musl suffix logic in setup.js's preinstall and self-updater's linkExePlatformBinary had no regression coverage. Extract the name-computation from both into small pure helpers and unit-test all four matrix cases (linux+musl, linux+glibc, darwin, win32) plus the win32 ia32->x86 arch normalization: - pnpm/artifacts/exe/platform-pkg-name.js exposes `exePlatformPkgName` (returns `@pnpm/exe.<platform>-<arch>[-musl]`). setup.js imports it instead of inlining the logic; the new setup.test.ts block covers the four-case matrix without having to mock detect-libc or patch process.platform. - engine/pm/commands/src/self-updater/installPnpm.ts exports a new `exePlatformPkgDirName` returning `exe.<platform>-<arch>[-musl]` (the scope-local dir). linkExePlatformBinary calls it; the new selfUpdate.test.ts block covers the same matrix. Both helpers are deliberately pure so the non-musl CI host can still exercise the musl code path.
806 KiB
806 KiB