mirror of
https://github.com/pnpm/pnpm.git
synced 2026-07-14 01:32:40 -04:00
Merge the three release flows (TypeScript, Rust CLI + @pnpm/napi, pnpr) into a single flow driven by pnpm's native workspace versioning (pnpm/pnpm#12953), dropping the @changesets/cli dependency (Closes pnpm/pnpm#12947). The native engine keys package identity on the workspace directory, so the Rust CLI wrapper is named pnpm (the v12 line at pnpm/npm/pnpm) and shares the published name with the TypeScript CLI at pnpm11/pnpm. Release configuration moves from .changeset/config.json to the versioning key of pnpm-workspace.yaml: versioning.lanes puts the Rust CLI, @pnpm/napi, and @pnpm/pnpr on an alpha lane (X.Y.Z-alpha.N prereleases published under next) while the TypeScript CLI releases stable on the main lane; versioning.fixed keeps the Rust CLI and @pnpm/napi at one shared version; versioning.ignore freezes @pnpm/logger, which is consumed as a catalog: peer the engine would otherwise reject as an internal range. Lanes replace the hand-rolled prerelease continuation, and the committed .changeset/ledger.yaml replaces the .changeset-released directory as the cherry-pick-safe record of consumed intents. bump.ts drops both and is now just pnpm version -r plus syncRustVersions, which mirrors the bumped wrapper versions into defaults.rs and the pnpr crate version. Because two workspace projects are named pnpm, name-based --filter=pnpm is qualified by directory (pnpm{pnpm11/pnpm}) across the build and release scripts, the meta-updater excludes the Rust wrappers by directory, and changesets targeting the TypeScript CLI reference it as ./pnpm11/pnpm. release.yml's plan job gates per-product publish jobs on which committed versions are unpublished; everything publishes via trusted publishing. @changesets/cli, .changeset/config.json, and the standalone pacquet/pnpr release workflows are removed; their npm trusted-publisher bindings must be re-pointed at release.yml before the first unified release. pnpm-lock.yaml is regenerated from scratch: an incremental --lockfile-only resolve after the @changesets/cli removal hit a pacquet incremental-resolver bug (pnpm/pnpm#12958) that emptied a peer-context snapshot the CLI depends on and broke the bundle build. A from-scratch resolve is correct; the bug is filed separately.