Перейти до основного змісту
Версія: 11.x

Міграція з 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.
  • Перейменовує allowNonAppliedPatchesallowUnusedPatches та auditConfig.ignoreCvesauditConfig.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.