Ответ
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. В таких случаях я изучаю отчет и вручную обновляю проблемные пакеты, тестируя изменения.
Ответ 18+ 🔞
А, ну это же классика, ёпта! npm audit — это как такой занудный охранник в супермаркете, который ходит за тобой и тычет пальцем: «Э, гражданин, а у вас в корзине просроченный йогурт! И тут пакет с дырочкой!». По сути, это встроенная в npm команда, которая берет твой package-lock.json и начинает сверять все установленные пакеты с огромной базой данных уязвимостей — Node Security Advisory.
Что она делает, если по-простому:
- Роется в твоих шкафах: Проверяет ВСЕ зависимости, и те, что для продакшена, и для разработки. Ничего не скроешь.
- Строчит донос: Выдает тебе табличку, где расписано: вот этот пакет, вот тут лежит, уровень угрозы — «высокий», как будто бомба замедленного действия, и что с этим делать (обычно «апдейтни, дурак»).
Как этим пользоваться, чтобы не облажаться:
# Просто запустить и посмотреть, насколько всё хуёво
npm audit
# Сказать npm: «Ладно, чини что можешь сам, но без фанатизма»
npm audit fix
# А это уже режим «да похуй, ломай — не строить», можно и мажорные версии повысит
npm audit fix --force
# Если хочешь проверить только то, что уйдет на продакшн (development-зависимости — в пизду)
npm audit --production
А теперь важные детали, которые надо понимать, чтобы самому от себя не охуеть:
- Она не проверяет твой код. Ты можешь написать такую дичь, что все уязвимости мира отдыхают, но
npm auditбудет молчать. Она ищет проблемы в чужих пакетах, которые ты используешь. - Если у тебя монорепа (Lerna, Nx), то бегай с этой командой по каждой папке с пакетом, иначе толку — ноль.
- Я, например, в CI/CD пайплайн её вставляю так, чтобы если вылезет что-то Critical или High, сборка сразу грохалась. Доверия ебать ноль к этим зависимостям.
- И вот главное:
npm audit fix— он не волшебный. Иногда он такой: «О, я пофиксил уязвимость!», а на деле сломал тебе пол-приложения, потому что обновил пакет с breaking changes. Поэтому после автофикса — обязательно тестируй, а лучше сначала смотри отчёт и думай головой, что апдейтить вручную. А то бывает так починишь, что потом сидишь и думаешь: «Э, бошка, думай, как теперь это говно раскатывать».