Files
Zoltan Kochan 3f4e9fcf13 fix: unify pinned-pnpm switch and record decision across entry points (#17427)
Closes pnpm/tasks#222.

Unify the pinned-pnpm switch and pin-recording decision across all CLI entry
points (commands, `--version`, unknown flags, `self-update`, and spawned
installs) in both pnpm v12 (`pnpm/`) and pnpm v11 (`pnpm11/`):

- Replace `VersionArgv`, `UnparsedArgv`, `PinFlags`, and `SwitchInput` in v12
  with a single `Invocation::from_argv(argv, entry_point)` model.
- Extract `apply_cli_layers(config, invocation, config_overrides, dir)` so
  pre-command loads and the command's full config load apply `--config.<key>`
  overrides and CLI flags at the same `lockfileDir`, forwarding CLI config
  into the switched pnpm, `verifyDepsBeforeRun` installs, pin recording, and
  bootstrap downloads.
- Introduce a pure `decide(pin, settings, invocation)` (`decidePinAction` in
  v11) function returning `Switch | Record(at) | Nothing` used by all entry
  points including `self-update`.
- Load the full config at most once and reuse the config loaded during pin
  recording for the subsequent command execution.
- Add the shared `fixtures/pin-decision.json` test matrix and integration
  tests (`pin_decision_matrix`, `cli_config_reaches_every_child`, and
  `pin_recorded_only_from_full_config_at_lockfile_dir`) in both stacks.
2026-10-27 12:28:54 +01:00
..

@pnpm/exec.commands

Commands for running scripts

npm version

Installation

pnpm add @pnpm/exec.commands

License

MIT