Конфігураційні залежності
Конфігураційні залежності дозволяють вам ділитися і централізовано використовувати конфігураційні файли, налаштування і хуки в декількох проєктах. Вони встановлюються перед усіма звичайними залежностями ("dependencies", "devDependencies", "optionalDependencies"), що робить їх ідеальними для налаштування власних хуків, патчів і записів у каталогах.
Конфігураційні залежності допомагають зберігати всі хуки, налаштування, патчі, перевизначення, каталоги, правила в одному місці і використовувати їх у різних репозиторіях.
Якщо ваша конфігураційна залежність має назву за зразком pnpm-plugin-* або @*/pnpm-plugin-*, pnpm автоматично завантажить файл pnpmfile.cjs з його кореневої теки.
Як додати конфігураційну залежність
Конфігураційні залежності визначені у вашому файлі pnpm-workspace.yaml і повинні бути встановлені з використанням точної версії та контрольної суми цілісності.
Наприклад, виконання команди pnpm add --config my-configs додасть цей запис до вашого файлу 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.
Приклад:
import { readPackage } from '.pnpm-config/my-hooks'
export const hooks = {
readPackage
}
Динамічне оновлення налаштувань pnpm
За допомогою хука updateConfig ви можете динамічно оновлювати налаштування pnpm за допомогою конфігураційних залежностей.
Наприклад, наступний pnpmfile додає новий запис catalog до конфігурації pnpm:
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:"
}
}
Це спрощує підтримку та обмін централізованими версіями конфігурації та залежностей між проєктами.
Завантаження патчів
Ви можете посилатися на файли виправлень, що зберігаються у конфігураційних залежностях.
Приклад:
configDependencies:
my-patches: "1.0.0+sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="
patchedDependencies:
react: "node_modules/.pnpm-config/my-patches/react.patch"