Correct the v12 guides from agent-skills.md through lockfile.md against pnpm/crates, and fix the same wrong text on the v11 twins where pnpm11 confirms it. Part of pnpm/tasks#191. Wrong claims (both versions): - configuring: the global auth file is auth.ini, not rc; list the npm_config_* exceptions (workspace dir, userconfig, URL-scoped auth). - config-dependencies: the hook import used an invalid ESM specifier. - docker: Example 3 ran fetch --prod and built without an offline install or pnpm-workspace.yaml. - errors: drop MISMATCHED_RELEASE_CHANNEL, describe INVALID_NODE_VERSION through nodeVersion, PEER_DEP_ISSUES needs strictPeerDependencies. - faq: no lockfile deletion after a readPackage hook, default store order, junctions depend on symlink privilege. - filtering: `!./lib` matches one project; use `!./lib/**`. - git branch lockfiles: every non [A-Za-z0-9_.-] character becomes `!`, the name is lowercased, merging deletes branch lockfiles, "or" patterns. - git-worktrees: remove the nonexistent worktree:new and shell/wt.sh. - global-packages: orphaned dirs are cleaned by add -g (and update -g in v12), not store prune; document that add -g replaces every group that contains the package. - how-peers-are-resolved: current peer directory names. - completion: built-in completion already covers --filter and scripts. - feature-comparison: broken JSR anchor. Wrong claims (v12 only): - cargo: cargo.indexUrl fails the parse, overrides apply to adding only, merge the duplicated Cargo index section into Registries. - global-virtual-store: pnx keeps its own virtual store (dlx part only; the global-install claims are left for a separate decision). - installation: the npm package installs on Node.js 18, only get-pnpm needs 22.13; trim unverified compatibility rows. Missing facts (v12): agent-skills group filtering and naming, catalogs (catalogs.default, pnx, --save-catalog, error codes), cargo recursive add, build-std, resolution keys, completion zsh/pwsh setup, config dependency location and error codes, include error codes, CI opt-outs and pnpm ci, finders on list, filtering settings and --no-fail-if-no-match, global install refusals, trust for npm-registry package managers, Rust shims, overrides link from aliases. Stale history (v12): drop v11/v10 version markers and "since v11" narration in continuous-integration, filtering, finders, git-worktrees, global-packages, global-virtual-store, how-peers-are-resolved, lockfile, completion, configuring. Review follow-up: the Node.js compatibility table keeps the pnpm 10 column; Docker Example 3 builds with all dependencies in a build stage and ships only production dependencies, with the pnpm-workspace.yaml caveat (both versions); catalogs keep the bare-path form; v11 global packages name `pnpm update -g` as cleaning orphans too; the cargo build-std note says when rust-src must be listed. Second review: build-std needs a non-empty list; the Docker fetch layer also depends on the project settings; branch lockfile names keep only ASCII characters; the conflict merge needs both sides to parse; Rust shims and package managers are default globalShims participants; pnpm self-update also cleans orphaned global groups; v12 pnpm login writes tokens to config.yaml; legacyDirFiltering keeps the subtree wording (the v12 mismatch is pnpm/tasks#196); the v12 Docker example copies the files that `include` names before pnpm fetch.
1.9 KiB
id, title
| id | title |
|---|---|
| git_branch_lockfiles | Git Branch Lockfiles |
Git branch lockfiles allows you to totally avoid lockfile merge conflicts and solve it later.
Use git branch lockfiles
You can turn on this feature by configuring the pnpm-workspace.yaml file.
gitBranchLockfile: true
By doing this, lockfile name will be generated based on the current branch name.
For instance, the current branch name is feature-1. Then, the generated lockfile name will
be pnpm-lock.feature-1.yaml. You can commit it to the Git, and merge all git branch lockfiles later.
- <project_folder>
|- pnpm-lock.yaml
|- pnpm-lock.feature-1.yaml
|- pnpm-lock.<branch_name>.yaml
:::note
Every character in the branch name other than ASCII letters, digits, _, ., and - is converted to !,
and the name is lowercased. So the lockfile of the Feature/1 branch is pnpm-lock.feature!1.yaml.
A character outside the Basic Multilingual Plane, such as an emoji, becomes !!.
:::
Merge git branch lockfiles
pnpm install --merge-git-branch-lockfiles
To merge all git branch lockfiles, just specify --merge-git-branch-lockfiles to pnpm install command.
After that, all git branch lockfiles will be merged into one pnpm-lock.yaml, and the branch lockfiles are deleted.
Branch matching
pnpm allows you to specify --merge-git-branch-lockfiles by matching the current branch name.
For instance, by the following setting in pnpm-workspace.yaml file, pnpm install will merge all git branch lockfiles when
running in the main branch or in a branch whose name starts with release.
mergeGitBranchLockfilesBranchPattern:
- main
- release*
See gitBranchLockfile and mergeGitBranchLockfilesBranchPattern for the setting reference.