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