Безопасность зависимостей
Компрометация транзитивной зависимости может привести к внедрению вредоносного кода в финальный бандл.
Правила
MUST
✅ MUST: Использование lock-файлов (package-lock.json, yarn.lock или pnpm-lock.yaml) обязательно
✅ MUST: Lock-файлы должны быть в git-репозитории
✅ MUST: Пакеты должны регулярно проверяться через npm audit (или аналоги)
✅ MUST: Code Review должен включать проверку изменений в lock-файле
✅ MUST: Настроить автоматические проверки уязвимостей в CI/CD
SHOULD
✅ SHOULD: Использовать флаг --ignore-scripts при установке новых пакетов
✅ SHOULD: Проявлять осторожность с preinstall и postinstall скриптами
✅ SHOULD: Проверять новые пакеты перед добавлением (активность, размер, зависимости)
Фиксация версий
Lock-файлы
# ✅ MUST: Lock-файлы должны быть в git
git add package-lock.json # npm
git add yarn.lock # yarn
git add pnpm-lock.yaml # pnpm
# ❌ FORBIDDEN: Игнорирование lock-файлов
# .gitignore
package-lock.json # НЕ ДЕЛАЙТЕ ТАК!
yarn.lock # НЕ ДЕЛАЙТЕ ТАК!
Package.json конфигурация
{
"scripts": {
"preinstall": "npx only-allow pnpm",
"audit": "pnpm audit --audit-level=moderate",
"audit:fix": "pnpm audit --fix"
},
"engines": {
"node": ">=18.0.0",
"pnpm": ">=8.0.0"
}
}