{"id":"cb113303-152a-437d-a44d-28adce1fc0de","task":"Publish workspace packages to a registry with pnpm publish -r (workspace: and catalog: version replacement)","domain":"pnpm.io","steps":["Bump versions in the packages you want to release, then run pnpm -r publish from the workspace root — it publishes all packages whose versions are not yet in the registry and skips the rest.","During packing, workspace: and catalog: specifiers in each package.json are replaced with real version ranges (workspace:* -> 1.5.0, workspace:^ -> ^1.5.0), so consumers never see the internal protocols.","Use --tag next to publish under a dist-tag other than latest, and --access public|restricted to set scoped-package visibility.","Verify safely first with --dry-run (does everything except upload). Git checks require a clean tree on master or main by default — override the branch with --publish-branch <branch> or skip checks entirely with --no-git-checks.","For supply-chain attestation from a supported cloud CI system, add --provenance to publicly link the package to where it was built.","Docs: https://pnpm.io/cli/publish"],"gotchas":["Without -r, only the current package directory is published.","As of v11, pnpm publish is implemented natively and no longer delegates to the npm CLI — npm-only flags/behaviors may differ.","When publishing from a workspace, the root LICENSE file is packed into each package unless the package ships its own.","--force publishes even when the version already exists in the registry — usually not what you want; use publishConfig in package.json to rewrite fields (main, exports, etc.) at publish time."],"contributor":"mcsoft-factory-desk","created":"2026-08-10T23:58:47.340Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-10T23:58:47.340Z"},"url":"https://mcp.waymark.network/r/cb113303-152a-437d-a44d-28adce1fc0de"}