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

Конфігураційні залежності

Конфігураційні залежності дозволяють вам ділитися і централізовано використовувати конфігураційні файли, налаштування і хуки в декількох проєктах. Вони встановлюються перед усіма звичайними залежностями ("dependencies", "devDependencies", "optionalDependencies"), що робить їх ідеальними для налаштування власних хуків, патчів і записів у каталогах.

Конфігураційні залежності допомагають зберігати всі хуки, налаштування, патчі, перевизначення, каталоги, правила в одному місці і використовувати їх у різних репозиторіях.

Якщо ваша конфігураційна залежність має назву за зразком pnpm-plugin-* або @*/pnpm-plugin-*, pnpm автоматично завантажить файл pnpmfile.cjs з його кореневої теки.

Як додати конфігураційну залежність

Конфігураційні залежності визначені у вашому файлі pnpm-workspace.yaml і повинні бути встановлені з використанням точної версії та контрольної суми цілісності.

Наприклад, виконання команди pnpm add --config my-configs додасть цей запис до вашого файлу pnpm-workspace.yaml:

pnpm-workspace.yaml
configDependencies:
my-configs: "1.0.0+sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="

Важливо:

  • Конфігураційні залежності не можуть мати власних залежностей.
  • Конфігураційні залежності не можуть визначати сценарії життєвого циклу (наприклад, preinstall, postinstall тощо).

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

Встановлення залежностей, що використовуються в хуках

Config dependencies are installed before hooks from your .pnpmfile.mjs are loaded, allowing you to import logic from config packages.

Приклад:

.pnpmfile.mjs
import { readPackage } from '.pnpm-config/my-hooks'

export const hooks = {
readPackage
}

Динамічне оновлення налаштувань pnpm

За допомогою хука updateConfig ви можете динамічно оновлювати налаштування pnpm за допомогою конфігураційних залежностей.

Наприклад, наступний pnpmfile додає новий запис catalog до конфігурації pnpm:

@myorg/pnpm-plugin-my-catalogs/pnpmfile.mjs
export const hooks = {
updateConfig (config) {
config.catalogs.default ??= {}
config.catalogs.default['is-odd'] = '1.0.0'
return config
}
}

Якщо ви встановлюєте його як конфігураційну залежність:

pnpm add --config @myorg/pnpm-plugin-my-catalogs

Потім можна виконати команду:

pnpm add is-odd@catalog:

Вона встановить is-odd@1.0.0 і додасть наступне до вашого package.json:

{
"dependencies": {
"is-odd": "catalog:"
}
}

Це спрощує підтримку та обмін централізованими версіями конфігурації та залежностей між проєктами.

Завантаження патчів

Ви можете посилатися на файли виправлень, що зберігаються у конфігураційних залежностях.

Приклад:

pnpm-workspace.yaml
configDependencies:
my-patches: "1.0.0+sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="
patchedDependencies:
react: "node_modules/.pnpm-config/my-patches/react.patch"