pnpmЩо нового в pnpm 12.17
Реліз pnpm 12.17 додає глобальну перевірку peer-залежностей, нові селектори в overrides та розширені перевірки оновлень для рантаймів і суміжних екосистем.
Реліз від 30 жовтня 2026 · оновлено 8 листопада 2026
Головне
- Команда pnpm peers check тепер підтримує прапорець --global (-g)
- Селектори :prod, :optional, :peer та патерни * у секції overrides
- pnpm outdated та update перевіряють версії рантаймів, Cargo та Python
- Файли проєкту створюються з правами umask (наприклад, 0644) для Docker
Коротко
Вийшла версія pnpm 12.17.0. Оновлення додає підтримку перевірки глобальних peer-залежностей, розширює можливості конфігурації overrides за допомогою псевдоселекторів груп залежностей і масок *, а також інтегрує перевірку рантаймів, пакетних менеджерів, Cargo та Python у команди pnpm outdated і pnpm update. Крім того, виправлено права доступу до створених файлів під час роботи в Docker-контейнерах та усунено низку помилок під час повторних інсталяцій.
Нові можливості
Перевірка peer-залежностей
- Команда
pnpm peers checkтепер приймає прапорці--global(-g) для перевірки глобально встановлених пакетів. Після глобального встановлення чи оновлення повідомлення з попередженням про peer-залежності тепер пропонує виконатиpnpm peers check -g.
Розширені селектори в overrides
- Селектори в
overridesотримали підтримку псевдоселекторів:prod,:optionalта:peer, які націлюються на конкретну групу залежностей. - Підтримуються патерни з маскою
*для імен батьківських і цільових пакетів. - Правило перевизначення зі значенням, що не є діапазоном (наприклад,
npm:абоfile:), більше не додає peer-залежність доdependencies. - Видалення опціональної залежності за допомогою
"-"тепер також видаляє дублікат запису зdependencies.
Оновлення рантаймів та залежностей Cargo і Python
- Команди
pnpm outdatedтаpnpm updateтепер аналізують та оновлюють версії пакетних менеджерів і рантаймів у поляхdevEngines.packageManager,packageManager,devEngines.runtime,engines.runtimeта залежностях типуruntime:. - За умов увімкнених налаштувань
cargo.enabledабоpython.enabledкомандиpnpm outdatedтаpnpm updateперевіряють й оновлюють залежності Cargo у файлахCargo.tomlіCargo.lock, а також залежності Python уpyproject.tomlіpylock.toml.
Виправлення та покращення
Встановлення пакетів і файлова система
- Файли, які pnpm створює в проєкті, тепер отримують стандартні дозволи згідно з
umask(наприклад,0644). Раніше низка файлів була доступна для читання лише користувачу, який запускав pnpm, що викликало помилки в Docker-образах під іншими користувачами. Це виправлення стосуєтьсяnode_modules/.pnpm-workspace-state-v1.json,pnpm-workspace.yaml, файлів післяpnpm deploy, патчів ізpnpm patch-commit, відновленого локфайлу післяpnpm dedupe --check, а також згенерованих файлів Cargo та Python. pnpm installбільше не створює пошкоджені посилання на залежності, якщоnode_modulesпроєкту є символьним посиланням на іншу директорію.- Команди, встановлені через
pnpm add --global, тепер знаходять залежності, які pnpm підіймає (hoist) для їхнього пакета (актуально для незадекларованих залежностей на кшталт нативних адонів під конкретну платформу). - У разі перемикання на версію, закріплену проєктом, pnpm тепер встановлює нативний бінарний файл цієї версії для поточного хоста, навіть якщо
supportedArchitecturesйого виключає. - У глобальному віртуальному сховищі (global virtual store) зміна залежності пакета в циклі залежностей тепер виділяє кожному пакету в цьому циклі нову директорію.
- Із параметром
nodeLinker: hoisted, коли два проєкти у воркспейсі потребують однакову версію пакета і її неможливо підняти в корінь, кожен проєкт зберігає копію у власномуnode_modules. - Селектор
latestдля Node.js тепер обирає найновіший стабільний реліз. - Створення жорстких посилань зі сховища тепер викликає перевірку стану (
stat) кожного файлу зі сховища лише один раз за інсталяцію.
Повторні інсталяції та локальні залежності
pnpm install --frozen-lockfileбільше не повідомляє про застарілий локфайл одразу після інсталяції, яка його створила, якщо хукreadPackageабоpackageExtensionsзмінювали залежності локальної директорії за межами воркспейсу.pnpm installповторно розв'язує залежності після редагування інжектованої залежностіworkspace:../dirза межами патернів воркспейсу зі спільним локфайлом.pnpm installзнову створює відсутні посилання для залежностейworkspace:абоlink:, якщо вони були видалені зnode_modules.- Повторний запуск
pnpm installзнову повертає статус «Already up to date», коли хукreadPackageзмінює залежності проєкту воркспейсу.
Керування залежностями
pnpm update --latestіз селекторами пакетів тепер оновлює залежності вибраних пакетів у межах їхніх задекларованих діапазонів, зберігаючи зафіксовані версії для виключених пакетів.pnpm add <pkg>@<tag>тепер використовує запис каталогу з цим самим dist-tag і зберігає залежність якcatalog:.pnpm addтепер зберігає розв'язаний діапазон версій для npm-аліасів (наприклад,pnpm add v2@npm:vueзберігаєnpm:vue@^3.5.13).
Виконання скриптів і команд
- Програми, запущені через скрипт або
pnpm exec(наприклад, браузер через пакетopen), тепер продовжують працювати після завершення pnpm за тих самих умов, що й без pnpm. У разі аварійного переривання рекурсивного чи паралельного запуску скрипти на Unix отримуютьSIGTERMі примусово завершуються лише за 2 секунди. - На Windows shell shim для
.cmdчи.batбінарників тепер запускає їх під Git Bash, коли вимкнено конвертацію аргументів MSYS (наприклад, ізMSYS_NO_PATHCONV=1). pnxтаpnpm createтепер виконують команди в директорії, заданій прапорцями--dirабо--workspace-root.- Прапорець
pnpm --env-fileтепер зчитує змінні аналогічно доnode --env-file: значення беруться буквально, без розкриття$VAR, а шляхи Windows на кшталтC:\Users\meзавантажуються без змін.
Налаштування
pnpm versionбільше не створює git-коміт і тег, якщо параметрgitTagVersionмає значенняfalse.pnpm publishтепер зчитує налаштуванняpublishBranchізpnpm-workspace.yamlта змінноїPNPM_CONFIG_PUBLISH_BRANCH.- Додано підтримку прапорців командного рядка
--strict-sslта--local-address <ip>. pnpm doctorтепер використовує 15-секундний таймаут під час перевірки з'єднання з реєстром.- Помилки парсингу
pnpm-workspace.yamlтепер повертають кодERR_PNPM_INVALID_SETTING. - Повідомлення про помилку невалідної назви залежності в маніфесті тепер вказує точну директорію проєкту.
Огляд підготовлено автоматично за офіційними release notes за допомогою ШІ та перевірено на відповідність джерелу. Точні формулювання дивіться в оригіналі. Як ми працюємо