Что выполняет команда npm audit?

«Что выполняет команда npm audit?» — вопрос из категории Node.js Core, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

npm audit — это встроенная команда npm, которая сканирует дерево зависимостей проекта, описанное в package-lock.json, на наличие известных уязвимостей. Она сверяет версии установленных пакетов с базой данных Node Security Advisory.

Основное действие:

  1. Анализ: Проверяет все зависимости (production и development по умолчанию).
  2. Отчет: Выводит таблицу с найденными уязвимостями, указывая:
    • Пакет и путь до него.
    • Уровень серьезности (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. В таких случаях я изучаю отчет и вручную обновляю проблемные пакеты, тестируя изменения.