Ответ
npm audit — это встроенная команда npm, которая сканирует дерево зависимостей проекта, описанное в package-lock.json, на наличие известных уязвимостей. Она сверяет версии установленных пакетов с базой данных Node Security Advisory.
Основное действие:
- Анализ: Проверяет все зависимости (production и development по умолчанию).
- Отчет: Выводит таблицу с найденными уязвимостями, указывая:
- Пакет и путь до него.
- Уровень серьезности (Low, Moderate, High, Critical).
- Тип уязвимости (например, Arbitrary Code Execution).
- Рекомендуемое действие (обновить пакет до определенной версии).
Практическое использование:
# Запуск сканирования и вывод отчета
npm audit
# Автоматическое применение исправлений, где это возможно (патчи semver-совместимые)
npm audit fix
# Более агрессивное исправление, может обновлять major-версии
npm audit fix --force
# Проверить только зависимости для production
npm audit --production
Важные нюансы в контексте Node.js:
- Проверяет зависимости, а не исходный код вашего приложения.
- Для монорепозиториев (например, с использованием Lerna или Nx) нужно запускать в корне каждого пакета.
- Я интегрирую
npm auditв CI/CD пайплайн, чтобы сборка падала при обнаружении уязвимостей уровня High или Critical. - Иногда
audit fixможет привести к поломке из-за breaking changes. В таких случаях я изучаю отчет и вручную обновляю проблемные пакеты, тестируя изменения.