pnpm patch <pkg>

Готує пакунок для виправлення (на основі подібної команди в Yarn).

Виконання цієї команди призведе до розпакування пакунка до тимчасової теки, призначеної для редагування за бажанням.

Після внесення змін виконайте pnpm patch-commit <path> (де <path> — це тимчасова тека, яку ви отримали), щоб згенерувати файл виправлень і зареєструвати його у вашому маніфесті верхнього рівня за допомогою поля patchedDependencies.

Використання:

pnpm patch <pkg name>@<version>

нотатка

Якщо ви хочете змінити залежності пакунка, не використовуйте виправлення для модифікації файлу package.json пакунка. Для перевизначення залежностей використовуйте перевизначення або хук пакунка.

Параметри#

--edit-dir <dir>#

Пакунок, який потрібно виправити, буде розпаковано до цієї теки.

--ignore-existing#

Ігнорувати наявні файли виправлень під час виправлення.

Налаштування#

patchedDependencies#

Це поле буде додано/оновлено автоматично під час запуску pnpm patch-commit. Воно визначає патчі для залежностей за допомогою словника, де:

  • Ключі: назви пакунків із точною версією, діапазоном версій або просто назвою.
  • Значення: відносні шляхи до файлів виправлень.

Приклад:

patchedDependencies:
  express@4.18.1: patches/express@4.18.1.patch

Dependencies можна виправляти за діапазоном версій. Порядок пріоритетності такий:

  1. Точні версії (найвищий пріоритет)
  2. Діапазони версій
  3. Патчі лише для імен (застосовуються до всіх версій, якщо їх не замінено)

Окремий випадок: діапазон версій *` поводиться як патч лише з назвою, але не ігнорує помилки патча.

Приклад:

patchedDependencies:
  foo: patches/foo-1.patch
  foo@^2.0.0: patches/foo-2.patch
  foo@2.1.0: patches/foo-3.patch
  • patches/foo-3.patch застосовується до foo@2.1.0.
  • patches/foo-2.patch застосовується до всіх версії що збігаються з ^2.0.0, але не до 2.1.0.
  • patches/foo-1.patch застосовується до всіх інших версій foo.

Уникайте перекриття діапазонів версій. Якщо вам потрібно виділити якийсь піддіапазон, чітко виключіть його з ширшого діапазону.

Приклад:

patchedDependencies:
  # Конкретний піддіапазон
  "foo@2.2.0-2.8.0": patches/foo.2.2.0-2.8.0.patch
  # Загальний патч, за винятком вищезазначеного піддіапазону
  "foo@>=2.0.0 <2.2.0 || >2.8.0": patches/foo.gte2.patch

У більшості випадків достатньо визначити точну версію, щоб перевизначити ширший діапазон.

allowUnusedPatches#

Додано у: v10.7.0 (Попередня назва allowNonAppliedPatches)

  • Стандартно: false
  • Тип: Boolean

Якщо true, встановлення не завершиться невдачею, якщо деякі з виправлень з поля patchedDependencies не було застосовано.

patchedDependencies:
  express@4.18.1: patches/express@4.18.1.patch
allowUnusedPatches: true

нотатка

У версії v11 при помилках під час застосування патчів завжди генерується повідомлення про помилку — параметр ignorePatchFailures було видалено. Під час застосування декількох патчів у групі помилка в одному з них не заважає спробі застосування решти; усі помилки, пов’язані з патчами, показуються разом наприкінці.