pnpm 12.2 прискорив великі monorepo та виправив audit і deploy
Менеджер пакетів один раз розв’язує повторювані workspace-залежності, паралельно шукає проєкти та коректніше ремонтує audit, deploy і shared store.

pnpm 12.2 оптимізує найболючіші місця великих JavaScript monorepo: повторювані workspace: залежності тепер розв’язуються один раз, пошук пакетів і читання package.json виконуються паралельно, а звіт peer dependencies не обходить без потреби весь lock-файл. Паралельно реліз виправляє audit --fix, deploy без обов’язкової ін’єкції workspace-пакетів і гонки у спільному global virtual store.

Менше повторної роботи у workspace
Якщо десятки пакетів посилаються на одну внутрішню залежність через workspace:*, workspace:^ або конкретну workspace-версію, попередня логіка могла повторно виконувати те саме resolution для кожного проєкту. У 12.2 результат кешується й повторно використовується. Це особливо корисно у frontend-платформах із великою кількістю design-system, tooling і application packages.
Workspace discovery також оптимізовано: patterns перевіряються конкурентно, а знайдені manifests читаються паралельно. Literal directories і звичні patterns із кінцевою зірочкою обробляються швидше. Водночас повернено правило pnpm 11 для прихованих каталогів: wildcard не захоплює .git або packages/.cache, якщо dot-directory не названий явно. Це зменшує випадкове включення службових директорій.
Audit repair працює передбачуваніше
pnpm audit --fix більше не має падати з ERR_PNPM_INVALID_FIX_OPTION, якщо прапорець передано без значення, зокрема перед --json. Режим --fix=override тепер враховує saveExact і savePrefix під час запису vulnerability overrides. Це важливо для репозиторіїв, де формат діапазону версій є частиною політики відтворюваності.
Автоматичний fix не слід сприймати як завершене security review. Після зміни overrides потрібно зберегти diff lock-файлу, повторити тести й перевірити, чи не змінився runtime API транзитивної залежності. Для критичних пакетів advisory варто зіставити з реально reachable кодом.
Deploy без загальної вимоги injectWorkspacePackages
pnpm deploy тепер може працювати без увімкненого injectWorkspacePackages. Linked workspace dependency переписується у dedicated deploy lockfile як file: dependency, а peer dependencies прив’язуються до графа розгортання. Це робить production bundle менш залежним від глобального workspace setting.
Є чесне обмеження: якщо peer у deploy graph розв’язується одразу у кілька версій, pnpm не вгадує потрібну. Він повертає ERR_PNPM_DEPLOY_AMBIGUOUS_PEER, називає пакет, peer і конкурентні версії та радить закріпити одну через override. Така помилка корисніша за мовчазний вибір, який може відрізнятися між CI та локальним середовищем.
Гонки у shared store і Windows/WSL
Коли кілька інсталяцій одночасно працювали зі спільним global virtual store, одна могла видалити command shim саме тоді, коли інша змінювала його права, що завершувалося ERR_PNPM_CMD_SHIM_CHMOD. Реліз закриває цю гонку та повторює transient file-lock operations у Windows під час заміни hoisted packages.
Виправлено PowerShell shim після глобальної інсталяції pnpm через npm, а context-aware shims у WSL2 тепер спрямовують native Linux installation до runtime проєкту. Patch 12.2.1, випущений невдовзі після 12.2, додатково відновив POSIX executable target без розширення, щоб pnpm 12.1 і старші могли самостійно оновитися до нової гілки. Тому практична ціль для оновлення — щонайменше 12.2.1.
Інші корисні зміни
- Catalogs можуть розв’язувати workspace-залежності через протокол
workspace:. - Catalog hooks із
pnpmfileзавантажуються до pack, publish і stage publish. - Optional peer обирається у версії, яка відповідає оголошеному діапазону, а не випадковій root-версії.
- Scripts, вибрані regex pattern в одному проєкті, запускаються паралельно в межах
workspaceConcurrency. - Не-ASCII символи у конфігурації, наприклад шлях
café-store, більше не псуються під час environment substitution.
Практичний висновок: для оновлення обирайте 12.2.1, зніміть benchmark cold install і deploy, а зміни audit overrides та peer resolution перевірте через diff і тести.
Обмеження
Release notes не обіцяють конкретного прискорення: результат залежить від кількості workspace-проєктів, повторюваності dependencies, storage та cache. Новий deploy flow не усуває неоднозначні peers і навмисно зупиняється, коли правильну версію неможливо визначити. Оновлення також не замінює pinning package-manager version у Corepack або CI image.
Джерело та права
Матеріал є самостійним українським перекладом-переказом release notes pnpm 12.2 і patch 12.2.1, опублікованих 1 вересня 2026 року командою pnpm. Репозиторій поширюється за MIT License. Перекладено, адаптовано й доповнено редакцією «Бібліотеки програміста». Обкладинка створена редакцією за допомогою AI і не входить до першоджерела.
Матеріал перекладено, переказано та доповнено редакцією українською мовою.
Читайте далі — ми вже розбираємо наступну важливу тему.


