Міграція з v10 на v11
У версії pnpm v11 внесено кілька змін, що впливають на сумісність із попередніми версіями, щодо способу зчитування конфігурації та набору доступних параметрів. Більшість змін у конфігурації носять механічний характер і можуть бути застосовані за допомогою codemod; решта вимагає ручної роботи. pnpm виводить посилання на цю сторінку, коли команда pnpm self-update 11 виконується з версії v10.
Запуск codemod
cd /path/to/your/project
pnpx codemod run pnpm-v10-to-v11
# або
pnpm add --global codemod
codemod run pnpm-v10-to-v11
Codemod автоматично робить наступне:
- Переміщує налаштування з
package.json#pnpmдоpnpm-workspace.yaml. У версії v11 pnpm більше не зчитує налаштування з поляpnpmу файліpackage.json. - Розділяє
.npmrcна розділи auth/registry та все інше. У версії v11 налаштування автентифікації та реєстру зчитуються тільки з файлу.npmrc. Усі інші налаштування (hoist-pattern,node-linker,save-exact, …) переміщуються вpnpm-workspace.yamlз ключами у форматі camelCase. Файли.npmrcдля окремих субпроєктів розміщуються в розділіpackageConfigs["<project-name>"]. - Консолідує налаштування залежностей збірки у файлі
allowBuilds.onlyBuiltDependencies,neverBuiltDependencies,ignoredBuiltDependenciesтаonlyBuiltDependenciesFileобʼєднуються в одну мапуallowBuilds({ name: true | false }). - Замінює параметри строгості менеджера пакунків на
pmOnFail.managePackageManagerVersions,packageManagerStrictтаpackageManagerStrictVersionзгортаються у один параметрpmOnFail: download | ignore | warn | error. - Перейменовує
allowNonAppliedPatches→allowUnusedPatchesтаauditConfig.ignoreCves→auditConfig.ignoreGhsas(ключ перейменовано; ідентифікатори CVE все ще потрібно конвертувати в ідентифікатори GHSA вручну — див. нижче). - Конвертує
useNodeVersionв записdevEngines.runtimeв кореневому файліpackage.json. - Оновлює
packageManagerу файліpackage.jsonдо цільової версії pnpm v11.
Дії, що виконуються вручну
Наступні зміни не піддаються автоматизації та вимагають ручного втручання:
- CVE → GHSA.
auditConfig.ignoreCvesбуло перейменовано наauditConfig.ignoreGhsas. Замініть кожен записCVE-YYYY-NNNNвідповідним ідентифікаторомGHSA-xxxx-xxxx-xxxx(показується у стовпці "Додаткова інформація" ("More info") виводуpnpm audit). ignorePatchFailuresбуло вилучено. У разі невдалого застосування патчів тепер завжди генерується помилка; виправте патч або видаліть залежність.executionEnv.nodeVersionу файліpackage.json#pnpmсубпакунка робочого простору видалено. Замість цього вкажіть середовище виконання у файліdevEngines.runtimeцього субпакунка.- Змінні середовища
npm_config_*більше не використовуютсья. Перейменуйте їх наpnpm_config_*у всіх місцях, де вони вказані (конфігурації CI, профілі оболонки, образи Docker). pnpm link <pkg-name>більше не обробляє пакунки з глобального сховища. Використовуйте відносний або абсолютний шлях (pnpm link ./foo).pnpm install -g(без аргументів) більше не підтримується. Використовуйте натомістьpnpm add -g <pkg>.pnpm serverбуло вилучено без будь-якої заміни.- Назви скриптів дублюють вбудовані команди. Якщо у вашому файлі
package.jsonвизначено скрипт із назвою:clean,setup,deployабоrebuild,pnpm <name>тепер запускає цей скрипт замість вбудованої команди. Використовуйтеpnpm pm <name>, щоб явно виконати вбудовану команду.
Повний перелік змін, що впливають на сумісність, див. у журналі змін v11.