pnpm update
Псевдоніми: up, upgrade
pnpm update оновлює пакунки до своєї останньої версії на основі зазначеного діапазону.
Якщо використовується без аргументів, оновлює всі залежності.
TL;DR#
| Команда | Значення |
|---|---|
pnpm up |
Оновлює всі залежності, дотримуючись діапазонів, вказаних у package.json |
pnpm up --latest |
Оновлює всі залежності до їх останніх версій |
pnpm up foo@2 |
Оновлює foo до останньої версії у v2 |
pnpm up "@babel/*" |
Оновлює всі залежності в межах @babel |
Since v11.27.1, a dependency whose specifier comes from a packageExtensions entry, a readPackage hook, or an override is not written to package.json. The lockfile keeps that specifier. pnpm update and pnpm audit --fix=update still move it inside the range.
An exact pin from one of those sources is left as it is. When that pin is a vulnerable version, pnpm audit --fix=update warns and points at pnpm audit --fix, which writes an override. An override is applied after packageExtensions and readPackage, so it replaces a specifier those supply.
Updating to a specific version#
Since v11.23.0, pnpm update <name>@<version> fails with ERR_PNPM_UPDATE_VERSION_ON_INDIRECT_DEP when the package is not a direct dependency of any selected project. There is nowhere to record the version in that case; pin a transitive dependency through overrides instead. Ranges and tags are unaffected.
Вибір залежностей з шаблонами#
Ви можете використовувати шаблони для оновлення певних залежностей.
Оновити всі пакунки babel:
pnpm update "@babel/*"
Оновити всі залежності, крім webpack:
pnpm update "\!webpack"
Шаблони також можна комбінувати, тому наступна команда оновить усі пакунки babel, крім core:
pnpm update "@babel/*" "\!@babel/core"
Updating GitHub Actions#
Додано у: v11.16.0
pnpm outdated can check the GitHub Actions referenced by the repository's workflow files for updates, and pnpm update can update them. This is opt-in for every command: pass --include-github-actions, or set update.githubActions to true in pnpm-workspace.yaml to enable it by default.
Updated actions are pinned to exact commit hashes, with their release tags preserved in comments:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
Local actions are followed rather than looked up: a ./-relative reference, and
since v11.26.0 GitHub's self-repository spelling
(uses: $/.github/actions/setup), resolve inside the repository.
Checking for updates runs git ls-remote against every referenced repository. Actions whose refs cannot be read (for example, an action in a private repository) are skipped with a warning. If the actions are hosted on a different GitHub server (such as a GitHub Enterprise Server), set update.githubActionsServer (added in v11.17.0).
Параметри#
--recursive, -r#
Одночасно виконується оновлення всіх вкладених тек з package.json (за виключенням
node_modules).
Приклад використання:
pnpm --recursive update
# updates direct dependencies only
pnpm --recursive update --depth 0
# update typescript to the latest version in every package
pnpm --recursive update typescript@latest
--latest, -L#
Оновлює залежності до їхньої останньої стабільної версії, визначеної теґами latest (потенційно оновлюємо пакунки до основних версій), якщо діапазон версій, вказаний у package.json, є меншим за теґ latest (тобто, це не призведе до пониження версій пре-випусків).
Since v11.27.1, --latest does not move a dependency past a specifier supplied by packageExtensions, a readPackage hook, or an override. The lockfile stays inside that specifier.
--global, -g#
Оновлює глобальні пакунки. Packages from the pnpm 10 global layout are migrated to the current layout. After a successful migration, pnpm removes the old installation and its symlinks, shims, and hard-linked executables from PNPM_HOME.
--workspace#
Намагається зробити звʼязки для усіх пакунків у робочому просторі. Версії оновлюються відповідно до версій пакунків у робочій області.
Якщо певні пакунки буде оновлено, команда не виконається, якщо жодної з оновлених залежностей не буде знайдено у робочому просторі. Наприклад, така команда не виконається, якщо express не є пакунком робочої області:
pnpm up -r --workspace express
--prod, -P#
Оновлює пакунки лише в dependencies та optionalDependencies.
--dev, -D#
Оновлює лише пакунки в devDependencies.
--no-optional#
Не оновлювати пакунки в optionalDependencies.
--peer#
Added in: v11.28.0
Also update the ranges in peerDependencies. Without this flag, pnpm update leaves peerDependencies unchanged.
pnpm update --peer react
--interactive, -i#
Показати застарілі залежності та вибрати, які з них оновити.
Since v11.21.0, combined with --global, each isolated install group is presented as one selectable item: packages that share a global installation update together as a unit.
--no-save#
Не оновлювати діапазони в package.json.
--changeset#
Додано у: v11.16.0
After the update completes, write a change intent (a changesets-compatible .changeset/*.md file) declaring a patch bump for every workspace package whose dependencies or optionalDependencies were changed by the update, and a major bump when its peerDependencies changed. Packages that consume an updated catalog entry via the catalog: protocol are included. Private packages, packages without a name, and packages listed in the ignore array of .changeset/config.json are skipped. If .changeset/config.json does not exist, a warning is printed and no changeset is generated.
Set update.changeset to true in pnpm-workspace.yaml to enable this behavior by default, and use --no-changeset to override the setting for one update.
--include-github-actions#
Додано у: v11.16.0
Also update the GitHub Actions referenced by the repository's workflow files. See Updating GitHub Actions.
Supply-chain policy flags#
Added in: v11.26.0
pnpm update accepts the same policy overrides as pnpm install and pnpm add: --trust-lockfile, --no-trust-lockfile, --trust-policy, --trust-policy-exclude, and --trust-policy-ignore-after, so a policy can be relaxed or tightened for a single run without editing pnpm-workspace.yaml.