pnpm 12.3.4 відновив проблемні хмарні збірки та пришвидшив великі монорепозиторії
pnpm 12 знову приймає знайомі булеві прапорці командного рядка, через несумісність з якими падали деякі автоматичні встановлення, зокрема на Vercel.

pnpm 12.3.4 виправляє несумісність командного рядка, через яку автоматичне встановлення могло завершуватися помилкою ще до завантаження залежностей. У релізі від 4 вересня команда повернула приймання булевих прапорців у командах, де вони працювали в pnpm 11, і прискорила розв’язання залежностей для великих workspace.

Чому збірка падала через знайомий прапорець
За описом релізу, pnpm 12 відхиляв частину булевих параметрів із повідомленням unexpected argument. Серед прикладів наведено pnpm install --unsafe-perm, pnpm add foo --offline та pnpm install --dangerously-allow-all-builds. Це створювало проблему для сценаріїв, які успішно працювали з pnpm 11.
Команда окремо зазначає Vercel: стандартний запуск із --unsafe-perm спричиняв падіння кожного встановлення у відповідному сценарії. Версія 12.3.4 відновлює приймання цих булевих параметрів на командах, які підтримували їх у попередній основній версії. pnpm remove теж тепер приймає --unsafe-perm, як install, add та update.
Це сумісність синтаксису, а не рекомендація вмикати все
Повернення прапорця не означає, що небезпечні режими варто використовувати без потреби. Назва dangerously-allow-all-builds прямо попереджає про розширений дозвіл виконання build-скриптів залежностей. Виправлення гарантує, що CLI розуміє параметр; рішення про його застосування залишається за розробником або платформою.
Так само --offline доречний лише тоді, коли потрібні пакети вже доступні локально. А --unsafe-perm слід оцінювати в контексті прав процесу й політики CI. Сумісність зі старим сценарієм не замінює перегляду того, чому сценарію взагалі потрібен цей параметр.
Прискорення для великих workspace
Друга зміна релізу прискорює розв’язання залежностей у великих робочих просторах. Це актуально для монорепозиторіїв, де одна операція охоплює багато пакетів і великий граф залежностей. Нотатки не містять конкретних бенчмарків, тому коректно говорити про заявлену оптимізацію, а не гарантований відсоток економії часу.
Практичний ефект залежатиме від розміру репозиторію, структури workspace, кешу й середовища виконання. Командам із невеликим одним пакетом зміна може бути майже непомітною, тоді як великі CI-конвеєри потенційно отримають більше користі.
Як безпечно перевірити оновлення
Якщо збірка pnpm 12 падала на unexpected argument, спершу варто відтворити її з версією 12.3.4 у тестовій гілці. Перевірте встановлення, запуск скриптів і незмінність lock-файла. Якщо CI фіксує версію package manager через Corepack або поле packageManager, оновіть її свідомо, щоб локальні та хмарні середовища використовували однаковий випуск.
Користувачам pnpm 11 немає сенсу трактувати цей патч як обов’язкову міграцію на 12: нотатки описують виправлення саме поточної гілки. Перед переходом між основними версіями слід окремо прочитати міграційні зміни.
Головне: pnpm 12.3.4 прибирає неочікувану несумісність із поширеними CLI-сценаріями та оптимізує великі workspace. Але кожний прапорець із розширеними дозволами варто залишати лише тоді, коли він справді потрібний.
Спонсорські банери з оригінальної сторінки не перенесено: вони не є частиною технічної суті релізу та мають окремі торговельні марки. Матеріал базується на двох підтверджених patch changes і не приписує випуску незаявлених можливостей.
Першоджерело та ліцензія
Першоджерело: pnpm releases. Автори: pnpm contributors. Текст перекладено й адаптовано редакцією; пояснення та практичні висновки додано. Ліцензія першоджерела: MIT.
Copyright (c) 2015-2016 Rico Sta. Cruz and other contributors; Copyright (c) 2016-2026 Zoltan Kochan and other contributors.
MIT permission notice: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Матеріал перекладено, переказано та доповнено редакцією українською мовою.
Читайте далі — ми вже розбираємо наступну важливу тему.


