Зараз читаютьПрактичні новини про код, AI та технології — без інформаційного шуму

pnpm 12.3.2 робить міграцію з npm і Yarn передбачуванішою

Імпорт зберігає допустимі зафіксовані версії залежностей, охоплює весь workspace і більше не приховує відсутній lockfile. Також виправлено зайві перевстановлення на NTFS.

pnpm 12.3.2 робить міграцію з npm і Yarn передбачуванішою

Змінити менеджер пакетів — не означає одночасно погодитися на нові версії всіх залежностей. У pnpm 12.3.2, опублікованому 4 вересня, виправлено імпорт lockfile з npm і Yarn. Новий реліз віддає перевагу версіям, уже записаним у вихідному файлі, коли вони відповідають обмеженням проєкту. Це важлива зміна для команд, які хочуть відокремити міграцію інструмента від оновлення бібліотек.

Редакційна AI-ілюстрація, створена для цього матеріалу; не входить до першоджерела.
Редакційна AI-ілюстрація, створена для цього матеріалу; не входить до першоджерела.

Менше неочікуваних змін під час переходу

Команда pnpm import читає package-lock.json, npm-shrinkwrap.json або yarn.lock і формує pnpm-lock.yaml. Раніше результат міг містити новіші версії, ніж були зафіксовані джерелом. Тепер збережена версія має пріоритет серед допустимих кандидатів.

При цьому правила з package.json, каталогів і overrides залишаються чинними. Тобто новий алгоритм не гарантує побітово однакового дерева за будь-якої конфігурації: якщо зафіксована версія суперечить поточним обмеженням, її не можна механічно перенести. Практичний виграш — менше непотрібних відмінностей, а не скасування перевірки сумісності.

Імпорт у workspace тепер охоплює всі його проєкти у спільному lockfile, а не лише поточний каталог. Для великого репозиторію це знижує ризик часткової міграції, коли одна частина залежностей перенесена, а інша фактично розв’язується заново.

Явна помилка краща за непомітний новий lockfile

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

Редакційна оцінка: для CI така суворість корисна, навіть якщо спочатку ламає старий скрипт. Команда отримує явний сигнал про неправильний вхідний файл і може виправити процес до того, як змінене дерево залежностей потрапить у реліз.

Що ще виправили

На файлових системах із часом модифікації точнішим за мілісекунду, зокрема NTFS, pnpm run і pnpm exec більше не повинні починати кожен запуск із перевстановлення. Також усунено зайве виконання кореневих lifecycle-скриптів через маркер незавершеної збірки у слоті глобального сховища, який поточний lockfile взагалі не використовує.

Команда pnpm audit --fix update тепер не перериває всю операцію через пакет, для якого немає безпечної версії в оголошеному діапазоні. Вона оновлює те, що може, і повідомляє про решту. Це не означає, що проєкт стає безпечним після успішного завершення: перелік невиправлених залежностей потрібно переглядати окремо.

Оновлення також приймає --ignore-scripts у pnpm update та містить оптимізації встановлення. Автори описують менші витрати на обхід workspace, розв’язання залежностей і повторне використання глобального сховища, але не дають універсального відсотка прискорення для кожного проєкту.

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

Першоджерело та ліцензія

Першоджерело: pnpm — офіційний changelog. Автори: Zoltan Kochan та учасники pnpm. Текст перекладено й адаптовано редакцією; пояснення та практичні висновки додано. Ліцензія першоджерела: 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.

Автор:Zoltan Kochan та учасники pnpm
Ліцензія:MIT ↗

Матеріал перекладено, переказано та доповнено редакцією українською мовою.

</>

Читайте далі — ми вже розбираємо наступну важливу тему.

Далі за темою

Схожі матеріали