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