Конфігураційні залежності
Конфігураційні залежності дозволяють вам ділитися і централізовано використовувати конфігураційні файли, налаштування і хуки в декількох проєктах. Вони встановлюються перед усіма звичайними залежностями ("dependencies", "devDependencies", "optionalDependencies"), що робить їх ідеальними для налаштування власних хуків, патчів і записів у каталогах.
Конфігураційні залежності допомагають зберігати всі хуки, налаштування, патчі, перевизначення, каталоги, правила в одному місці і використовувати їх у різних репозиторіях.
If your config dependency is named following the pnpm-plugin-*
pattern, pnpm will automatically load the pnpmfile.cjs
from its root.
Як додати конфігураційну залежність
Конфігураційні залежності визначені у вашому файлі pnpm-workspace.yaml
і повинні бути встановлені з використанням точної версії та контрольної суми цілісності.
Приклад:
configDependencies:
my-configs: "1.0.0+sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="
Важливо:
- Конфігураційні залежності не можуть мати власних залежностей.
- Конфігураційні залежності не можуть визначати сценарії життєвого циклу (наприклад,
preinstall
,postinstall
тощо).
Використання
Завантаження списку дозволених вбудованих залежностей
Ви можете завантажити список назв пакунків, як і дозволено збирати, за допомогою параметра onlyBuiltDependenciesFile
.
Приклад файлу allow.json
всередині конфігураційної залежності (@pnpm/trusted-deps):
[
"@airbnb/node-memwatch",
"@apollo/protobufjs",
...
]
Конфігурація вашого робочого простору:
configDependencies:
'@pnpm/trusted-deps': 0.1.0+sha512-IERT0uXPBnSZGsCmoSuPzYNWhXWWnKkuc9q78KzLdmDWJhnrmvc7N4qaHJmaNKIusdCH2riO3iE34Osohj6n8w==
onlyBuiltDependenciesFile: node_modules/.pnpm-config/@pnpm/trusted-deps/allow.json
Встановлення залежностей, що використовуються в хуках
Конфігураційні залежності встановлюються перед завантаженням хуків з вашого .pnpmfile.cjs
, що дозволяє вам імпортувати логіку з конфігураційних пакунків.
Приклад:
const { readPackage } = require('.pnpm-config/my-hooks')
module.exports = {
hooks: {
readPackage
}
}
Динамічне оновлення налаштувань pnpm
За допомогою хука updateConfig
ви можете динамічно оновлювати налаштування pnpm за допомогою конфігураційних залежностей.
Наприклад, наступний pnpmfile
додає новий запис catalog до конфігурації pnpm:
module.exports = {
hooks: {
updateConfig (config) {
config.catalogs.default ??= {}
config.catalogs.default['is-odd'] = '1.0.0'
return config
}
}
}
Встановіть і завантажте його:
configDependencies:
my-catalogs: "1.0.0+sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="
pnpmfile: "node_modules/.pnpm-config/my-catalogs/pnpmfile.cjs"
Потім можна виконати команду:
pnpm add is-odd@catalog:
Вона встановить is-odd@1.0.0
і додасть наступне до вашого package.json
:
{
"dependencies": {
"is-odd": "catalog:"
}
}
Це спрощує підтримку та обмін централізованими версіями конфігурації та залежностей між проєктами.