pnpmЩо нового в pnpm 12.16
Реліз pnpm 12.16 додає глобальний прапорець --env-file, підтримку оновлення symlink-файлів pnpm-lock.yaml та режим pnpm setup --no-modify-path.
Реліз від 27 жовтня 2026 · оновлено 8 листопада 2026
Головне
- Глобальний прапорець --env-file для завантаження змінних оточення з dotenv-файлів
- Підтримка оновлення pnpm-lock.yaml, якщо він є символьним посиланням
- Опція --no-modify-path для команди pnpm setup
- Усунення двох вразливостей безпеки: у розпакуванні zstd та підписанні
- Суворіші перевірки налаштувань для node_modules при повторних інсталяціях
Коротко
У релізі pnpm 12.16 з'явився повторюваний глобальний прапорець --env-file для завантаження змінних оточення з dotenv-файлів, опція --no-modify-path для команди pnpm setup та можливість оновлювати pnpm-lock.yaml, оформлений як символьне посилання. Також виправлено дві вразливості безпеки — під час декомпресії zstd та в операціях цифрового підпису. Оновлення супроводжується численними покращеннями роботи з конфігураціями та виправленнями помилок під час інсталяції пакетів.
Нові можливості
Прапорець --env-file
Додано глобальний прапорець --env-file <path>, який можна вказувати кілька разів для завантаження змінних оточення з файлів у форматі dotenv перед виконанням команди. Файли, зазначені пізніше, перезаписують значення з попередніх, але змінні, що вже існували в середовищі, зберігаються. Завантажені змінні доступні для інтерполяції в .npmrc на рівні користувача та для життєвих циклів скриптів (lifecycle scripts).
Робота з pnpm-lock.yaml через символьні посилання
Тепер pnpm уміє оновлювати pnpm-lock.yaml, який є символьним посиланням (symlink). Для цього призначене налаштування symlinkedLockfileTargetDirs (або змінна оточення PNPM_CONFIG_SYMLINKED_LOCKFILE_TARGET_DIRS), яке задається в глобальній конфігурації. У ньому перелічуються директорії, на які може вказувати lockfile: якщо файл, на який посилається symlink, міститься в одній із цих директорій, pnpm записує оновлення саме в нього, залишаючи символьне посилання на місці. Це налаштування ігнорується у pnpm-workspace.yaml.
Опція --no-modify-path для pnpm setup
Для команди pnpm setup додано прапорець --no-modify-path. Він встановлює pnpm, не додаючи його до системної змінної PATH, залишаючи файли конфігурації оболонки, реєстр Windows та файли середовища GitHub Actions без змін. Натомість команда виводить інструкції з рядками, які користувач може додати самостійно.
Безпека
- Усунено вразливості, пов'язані з витоком пам'яті та обробкою алокацій під час обробки стиснутих zstd-даних.
- Процедури підписання в pnpm і pnpr більше не використовують арифметичні операції, які можуть призвести до витоку закритого ключа через аналіз часу виконання (timing attacks). Це стосується спільних артефактів, токенів реєстру OCI та стану входу OIDC.
Виправлення та покращення
- Реакція на зміну налаштувань: повторний запуск
pnpm installбільше не виводить хибне «Already up to date», якщо змінилися параметриstoreDir,virtualStoreDir,globalVirtualStoreDir,virtualStoreDirMaxLength, увімкненоdangerouslyAllowAllBuildsабо вимкненоtrustLockfile. - Суворіша поведінка команд:
pnpm add,pnpm removeтаpnpm updateтепер завершуються помилкою (наприклад,ERR_PNPM_UNEXPECTED_STORE,ERR_PNPM_NODE_LINKER_DIFF), якщо поточнийnode_modulesне відповідає конфігурації, замість автоматичного тихого видалення та перевстановлення каталогу. - Прапорці для
pnpm add: підтримуються короткі літери в нижньому регістрі-p,-d,-oта-eяк псевдоніми відповідно до--save-prod,--save-dev,--save-optionalта--save-exact. Конструкція видуpnpm -D install <pkg>тепер коректно зберігає залежність уdevDependencies. - Глобальні пакети: під час встановлення через
pnpm add -gпакунки тепер зв'язуються зі спільного глобального віртуального сховища. НалаштуванняvirtualStoreType: projectповертає кожному глобальному пакету власне віртуальне сховище. - Вирішення однакових версій із реєстрів: якщо звичайний діапазон версій та префіксний специфікатор
<prefix>:резолвлять пакет з одного реєстру, тепер створюється один запис уpnpm-lock.yaml, і файл завантажується один раз, усуваючи збої одинаків (singletons) та перевірокinstanceof. - Поведінка
autoDedupe: false: якщо вимкненоautoDedupe, залежності кожного проєкту робочого простору резолвляться відповідно до його власних діапазонів і більше не стримуються вужчими версіями із сусідніх проєктів. - Очищення та синхронізація
.bin: командаpnpm installавтоматично видаляє шими (shims) зnode_modules/.bin, якщо залежність у робочому просторі перейменовує або прибирає поле зbin. - Підтримка прапорця
--cache-dir: додано прапорець--cache-dir <dir>для прямого налаштування шляху кешу (наприклад,pnpm install --cache-dir /tmp/pnpm-cache). - Складання з
filesуpnpm pack:pnpm packтаpnpm publishзастосовують прямі назви файлів у поліfilesпісля обробки glob-шаблонів, дотримуючись поведінки npm.
Огляд підготовлено автоматично за офіційними release notes за допомогою ШІ та перевірено на відповідність джерелу. Точні формулювання дивіться в оригіналі. Як ми працюємо