pnpm 12.8.2

pnpm 12.8.2 fixes a startup crash on Linux ppc64le and UnknownIssuer errors on systems without CA certificates. pnpm run no longer installs before every script on CI when autoDedupe is enabled, and resolution and hoisted installs on macOS are faster.

pnpm 12.8

pnpm 12.8 warns when pnpm pack or pnpm publish would ship a .env file, installs sharedWorkspaceLockfile: false workspaces concurrently, applies every setting passed as --config.<name>=<value>, and no longer leaves the Windows terminal stuck after Ctrl+C in a script. This release also carries a long list of bug fixes.

pnpm 12.7

pnpm 12.7 lets the global node shim follow .nvmrc and .node-version, adds pnpm install --allow-build and pnpm publish --publish-wait-timeout, and creates pnpm-workspace.yaml from the workspaces field of package.json. pnpm install --force no longer installs optional dependencies built for other platforms. This release also carries security fixes and a long list of bug fixes.

pnpm 11.28

pnpm 11.28 adds the forceIgnoresPlatform setting and pnpm update --peer, and brings a large batch of fixes from pnpm 12 to the JavaScript CLI: pnpm deploy, --filter, nodeLinker: hoisted, and custom modulesDir setups all behave better. It also carries security fixes for shell completion, bin shims on Nix, lifecycle scripts inside a custom modulesDir, and userAgent placeholders in pnpm-workspace.yaml.

pnpm 12.6

pnpm 12.6 ships with automatic dependency deduplication, relocatable node_modules, --save-types for installing @types/* packages alongside their counterparts, package.yaml manifest editing, and file: / link: protocols in catalogs.

pnpm 12.5

pnpm 12.5 expands Python support with editable project packages, shared workspace environments, automatic interpreter downloads, and lockfiles for multiple platforms and Python versions. It also accepts Package URLs in pnpm add, adds machine-wide task concurrency groups, and cleans up obsolete registry metadata with pnpm cache prune.

pnpm 12.4

pnpm 12.4 installs crates and Python packages next to npm packages in the same workspace, adds pnpm pipeline to run a workspace's tasks the way a CI job would, and ships binaries for six more platforms. pnpr 0.1.0-alpha.11, released alongside 12.4.1, serves Cargo, Python, and container registries beside npm, publishes across all of them in one transaction, and signs users in through OIDC.

pnpm 11.26

pnpm 11.26 brings the JavaScript CLI level with what pnpm 12 gained over the past two weeks: workspace: ranges in catalogs, the supply-chain flags on remove and update, pnpm change check for CI, and pnpm deploy without injected dependencies.

pnpm 12.2-12.3

pnpm 12.2 and 12.3 are largely a catch-up pair: a long list of things pnpm 11 did that the Rust CLI did not, put back. Catalogs learned the workspace: protocol, pnpm remove and pnpm update gained the supply-chain flags, every project-aware global command became a real executable, and hostname resolution went back to the system resolver on Linux and Windows. Large workspaces install noticeably faster.

pnpm 12.1

pnpm 12.1 brings the new workspace task scheduler to the Rust CLI, persists successful recursive tasks for precise retries, expands shared build artifacts to macOS and Windows, and moves login credentials into pnpm's structured global configuration. pnpr 0.1.0-alpha.9, released with it, makes the artifact tier independent and horizontally scalable through S3-compatible storage.

pnpm 11.25

pnpm 11.25 replaces topological batches with a task scheduler, adds configurable workspace task dependencies and per-task concurrency, and makes interrupted recursive runs resumable from the work that actually passed. It also introduces registry revisions, signed build artifacts shared through pnpr, batch approval for staged packages, automatic pruning of stale audit exceptions, and a pnpm init pin that follows the latest released pnpm.

pnpm 12.0

pnpm 12 is stable. It is a rewrite of pnpm in Rust. Upgrading should not feel like a migration. The documentation now defaults to pnpm 12, with the pnpm 11 documentation available from the version selector.

The few things that behave differently are listed in What's different in pnpm 12. This post covers what is new.

pnpm 11.24

pnpm 11.24 brings back pnpm approve-builds --global, which isolated global installs took away in v11.0, and makes recursive batch publishing group its packages by registry so a credential mismatch is caught before anything is published. It also stops --frozen-lockfile from failing over the pnpm version the lockfile pins.

pnpm 11.23

pnpm 11.23 gives the registries setting a shape that describes each registry once — its tarball layout, the scopes routed to it, the prefix it answers to — so an Artifactory or GitLab registry can finally keep its tarball URLs out of pnpm-lock.yaml. It adds virtualStoreType, makes undeclared imports resolve under ESM with the global virtual store without a plugin, teaches pnpm config get to report the settings pnpm actually acts on, and warns about settings no pnpm version recognizes.

pnpm 11.21-11.22

pnpm 11.21 and 11.22 teach pnpm install to update the lockfile in place for most everyday changes instead of re-resolving the whole dependency graph, stop recording SSH URLs that break installs on CI, make global installs switch over atomically and global interactive updates select whole install groups, add pnpm cache path, and take away a project's ability to relocate pnpm's machine-level state through pnpm-workspace.yaml.

What's different in pnpm 12

pnpm 12 is a rewrite of pnpm in Rust, and it is currently a release candidate. Upgrading is not meant to be a migration: apart from the differences below, it keeps the commands, flags, settings, and lockfile format of pnpm 11, and the documentation applies to both versions.

Five things differ, and one of them — a removed flag — fails outright rather than behaving differently. This post collects them in one place.

pnpm 11.20

pnpm 11.20 fixes a package-substitution risk in projects that install from more than one registry: packages resolved from a named registry are now recorded in the lockfile under registry-qualified keys. It also adds a built-in npmjs: alias, stops empty proxy settings from failing installs, hardens pnpm rebuild against a malicious lockfile, and speeds up dependency resolution.

pnpm 11.15-11.19

pnpm 11.15 through 11.19 teach pnpm update and pnpm outdated to update GitHub Actions, let pnpm update write changesets for the bumps it makes, introduce cleaner update and audit settings sections, add publishConfig.name for publishing a package under a different name, harden pnpm self-update against project-supplied configuration, make web-based login work without a TTY, and accept = as a save-prefix. They also cut peak resolution memory by several times on large workspaces and speed up repeat installs after compatible dependency changes.

pnpm 11.11-11.14

pnpm 11.11 through 11.14 add native workspace release management (pnpm change, pnpm lane, and a bare pnpm version -r), a pnpm doctor command that diagnoses your installation end to end, the pnpm access and pnpm team commands for managing packages and organizations on the registry, convergence overrides, and scheme-carrying peerDependencies specifiers. They also fix a path-traversal vulnerability, cut peak memory during cold-cache resolution by roughly 30%, and resolve a peer dependency deadlock.

pnpm 11.10

pnpm 11.10 додає налаштування _auth для зручної автентифікації в реєстрі в CI, нові команди pnpm prefix та pnpm issues, а також можливість для pnpm self-update встановлювати pnpm v12 (порт на Rust). Ця версія також покращує точність pnpm up, прискорює вирішення залежностей для реєстрів, які ігнорують скорочені метадані, та посилює стабільність керування глобальними пакунками, pnpm deploy і pnpm pack-app.

pnpm 11.9

У версії pnpm 11.9 реалізовано обчислення цілісності відсутніх архівів для реєстрів, які не можуть оприлюднювати контрольні суми, додано команду pnpm sbom --exclude-peers, покращено продуктивність аудиту циклічних файлів блокування, виправлено недетермінованість визначення однорангових залежностей та посилено обробку виключень для параметрів minimumReleaseAge та trustPolicy.

pnpm 11.8

pnpm 11.8 додає попередній перегляд встановлення без змін, генерацію мап пакунків для Node.js, розширене виведення SBOM, стандартну поведінку для pnpm view, яка тепер вказує на поточний пакунок, і коректні коди виходу для pnpm run --no-bail. Вона також містить виправлення обходу lockfile для залежностей конфігурації та багато виправлень детермінованості встановлення й оновлення.

pnpm 11.7

pnpm 11.7 додає налаштування frozenStore для встановлення з режимом сховища пакунків лише для читання, прапорець --batch для публікації всього робочого простору в одному запиті, токени автентифікації для конкретних областей видимості, а також делегує повне вирішення залежностей під час встановлення до pacquet. Крім того, у ній посилено контроль за використанням псевдонімів файлів блокування, декілька шляхів інсталяції тепер є детермінованими, а також включено низку виправлень, пов’язаних з публікацією та роботою в середовищі Windows.

pnpm 11.6

pnpm 11.6 додає спосіб надання автентифікації в реєстрі без використання файлів через змінні середовища npm_config_//… та pnpm_config_//…, збільшує стандартну кількість одночасних мережевих запитів, а також пропускає повне повторне вирішення залежностей, якщо відсутній лише файл pnpm-lock.yaml. Вона також автоматично визначає поля платформи для необовʼязкових залежностей, тому бінарні файли для інших платформ ніколи не завантажуються.

pnpm 11.5

pnpm 11.5 додає налаштування hoistingLimits для контролю того, наскільки високо піднімаються залежності під час встановлення з конфігурацією nodeLinker: hoisted, замінює бібліотеку інтерактивних підказок для виправлення прокручування у довгих списках вибору, розпізнає поетапні публікації у шкалі довіри, а також містить кілька виправлень для встановлення та dist-tag.

pnpm 11.4

pnpm 11.4 закриває низку вразливостей у ланцюжку постачання, повʼязаних із цілісністю lockfile, обмеженням видимості облікових даних, вирішенням git-залежностей, файлами патчів і псевдонімами залежностей, робить невідповідність хешів цілісності архівів стандартною критичною помилкою встановлення (із можливістю вибору вузькоспрямованого прапорця --update-checksums), а також змінює поведінку pnpm runtime set так, що зазвичай запис відбувається в devEngines.runtime замість engines.runtime.

pnpm 11.3

pnpm 11.3 додає підтримку поетапної публікації npm (pnpm stage), нове налаштування trustLockfile для пропуску перевірки ланцюжка постачання для вже довірених файлів lockfile, а також нативні реалізації pnpm pkg, pnpm repo та pnpm set-script. Крім того, додано прапорець --skip-manifest-obfuscation для команд pack та publish, що дозволяє зменшити обсяг пам’яті, який займає перевірка параметрів minimumReleaseAge та trustPolicy у великих робочих просторах.

pnpm 11.2

У версії pnpm 11.2 реалізовано експериментальну опцію, яка дозволяє використовувати pacquet (портування pnpm на Rust) як бекенд для встановлення, розширює залежності конфігурації для встановлення одного рівня optionalDependencies (тож шаблон платформних бінарних файлів esbuild/swc працює також для залежностей конфігурації), підключає давно задокументований прапорець pnpm login --scope та виводить записи часу виконання (Node.js, Deno, Bun) у pnpm outdated та pnpm update --interactive.

pnpm 11.1

pnpm 11.1 додає кілька нових команд — pnpm audit signatures, pnpm bugs та pnpm owner, разом із підтримкою встановлення з довільних іменованих реєстрів (включаючи вбудований псевдонім для реєстру npm GitHub Packages), можливістю пропускати встановлення середовища виконання в CI, а також кілька виправлень.

pnpm 11.0

pnpm 11 вже тут! У цьому випуску посилено стандартні налаштування безпеки, запроваджені протягом усього циклу v10, скасовано використання npm CLI як альтернативного варіанту для публікації на користь власної реалізації, замінено індекс сховища у форматі JSON для кожного пакета на єдину базу даних SQLite, а також ізольовано глобальні інсталяції, щоб вони більше не впливали одна на одну.

Він також вимагає Node.js 22 або новішу версію — сам pnpm тепер є чистим ESM.

Оновлюєтесь з v10? Перегляньте інструкцію Міграція з v10 до v11. Більшість змін у налаштуваннях є механічними, і їх можна застосувати за допомогою кодмода pnpm-v10-to-v11.

pnpm 10.32

у версії pnpm 10.32 до команди pnpm approve-builds додано параметр --all, який дозволяє затверджувати всі очікувані збірки без інтерактивних запитів.

pnpm 10.31

у версії pnpm 10.31 збережено коментарі та форматування під час оновлення файлу pnpm-workspace.yaml, а також виправлено чимало помилок.

pnpm 10.30

у версії pnpm 10.30 команда pnpm why була перероблена для показу дерева зворотних залежностей, що значно полегшує розуміння причин встановлення того чи іншого пакунка.

pnpm 10.29

pnpm 10.29 додає підтримку протоколу catalog: до pnpm dlx, дозволяє налаштовувати auditLevel у pnpm-workspace.yaml, підтримує порожній специфікатор workspace: та містить кілька виправлень помилок.

pnpm 10.28

У pnpm 10.28 представлено новий хук beforePacking для налаштування package.json під час публікації, покращено продуктивність інсталяції з використанням фільтрів та виправлено кілька помилок.

pnpm 10.27

pnpm 10.27 додає нове налаштування для ігнорування перевірок політики довіри для старих версій пакунків, вводить реєстр проєктів для глобального очищення віртуального сховища та включає кілька виправлень помилок.

pnpm 10.26

pnpm 10.26 вводить більш суворі стандартні налаштування безпеки для залежностей, що розміщуються на git, додає allowBuilds для детальних дозволів на виконання скриптів та включає нове налаштування для блокування екзотичних перехідних залежностей.

pnpm 10.25

pnpm 10.25 покращує обробку сертифікатів, додає базовий pnpm init та містить кілька виправлень, що покращують якість роботи.

pnpm 10.24

pnpm тепер автоматично масштабує мережевий паралелізм на машинах з великою кількістю ядер і містить кілька виправлень для підвищення надійності.

pnpm 10.23

Додано опцію --lockfile-only до pnpm list та різні покращення до pnpm self-update.

pnpm 10.22

Додано підтримку виключення пакунків із політики довіри та перевизначення поля engines під час публікації.

pnpm 10.21

Додано підтримку встановлення середовища виконання Node.js для залежностей та налаштування політики довіри.

pnpm 10.20

У цьому випуску додано прапорець --all для команди pnpm help, щоб виводити всі команди.

pnpm 10.19

У цій версії додано елементи керування в межах версії до двох налаштувань: [onlyBuiltDependencies] та [minimumReleaseAgeExclude].

pnpm 10.18

Незначні зміни#

Додано моніторинг продуктивності мережі до pnpm шляхом реалізації попереджень про повільні мережеві запити, включаючи як отримання метаданих, так і завантаження tar-архівів.

Додано параметри конфігурації для порогових значень попередження: fetchWarnTimeoutMs та fetchMinSpeedKiBps. Попереджувальні повідомлення показуються, коли запити перевищують часові обмеження або не досягають мінімальної швидкості

Див. PR: #10025.

Зміни в патчах#

  • Повторно виконати операції файлової системи при помилці EAGAIN #9959.
  • Застаріла команда враховує конфігурацію minimumReleaseAge #10030.
  • Правильно застосуйте конфігурацію cleanupUnusedCatalogs під час видалення залежних пакетів.
  • Уникайте беззмістовної помилки, якщо для scriptShell встановлено значення false #8748.
  • pnpm dlx не повинен завершуватися помилкою, якщо встановлено minimumReleaseAge #10037.

pnpm 10.17

Незначні зміни#

Налаштування minimumReleaseAgeExclude тепер підтримує шаблони.

pnpm 10.16

Незначні зміни#

Новий параметр для відкладеного оновлення залежностей#

Останнім часом було кілька інцидентів, коли популярні пакунки були успішно атаковані. Щоб зменшити ризик встановлення скомпрометованої версії, ми вводимо новий параметр, який затримує встановлення щойно випущених залежностей. У більшості випадків такі атаки виявляються швидко, а шкідливі версії видаляються з реєстру протягом години.

pnpm 10.15

Незначні зміни#

Нові налаштування для каталогів#

Додано конфігурацію cleanupunusedCatalogs. Якщо встановлено значення 'true', pnpm видалить невикористані записи каталогів під час встановлення #9793.

pnpm 10.14

Додано підтримку визначення середовища виконання JavaScript#

Вкажіть Node.js, Deno або Bun у devEngines.runtime (всередині package.json) і дозвольте pnpm завантажити і закріпити його автоматично.