Инициализация проекта и управление настройками
Первый шаг любого проекта — создание package.json. Команда npm init запускает интерактивный мастер, позволяя задать имя, версию, описание и другие метаданные. При необходимости можно сразу принять все значения по умолчанию, выполнив npm init -y. Файл package.json становится единственным источником правды о зависимостях, скриптах и конфигурации проекта.
Для контроля окружения используется npm config. С её помощью задаются глобальные и локальные параметры: указание корпоративного прокси (npm config set proxy http://proxy.example.com:8080), смена реестра пакетов (npm config set registry https://registry.npmjs.org/) или включение строгой фиксации версий. Все изменения сохраняются в файле .npmrc, который автоматически учитывается при последующих установках.
Точная работа с зависимостями
Разделение runtime‑ и dev‑зависимостей
В продакшн‑среде нужны только те пакеты, без которых работает приложение. Инструменты, используемые исключительно в процессе разработки (тест‑раннеры, линтеры, сборщики), следует ставить с флагом --save-dev:
npm install --save-dev jest eslint webpack
Обычная установка (npm install <package>) сохраняет зависимость в раздел dependencies, т.е. она будет автоматически установлена в любой окружении, где запускается npm install.
Жёсткая фиксация версии
По умолчанию NPM добавляет к версии символы ^ или ~, позволяя автоматически получать минорные обновления. Для проектов, где важна полная предсказуемость, рекомендуется включить точное сохранение версии:
npm config set save-exact true
После этого в package.json будет записана конкретная версия, например "express": "4.18.2".
Очистка лишних пакетов
Со временем список зависимостей в package.json может измениться, а в node_modules останутся устаревшие пакеты. Команда npm prune удаляет из директории node_modules всё, что не указано в текущем package.json. Это помогает поддерживать лёгкую и чистую структуру проекта.
Аудит безопасности и автоматическое исправление уязвимостей
Получение отчёта о слабых местах
Запуск npm audit отправляет дерево зависимостей в реестр NPM, где проверяется наличие известных уязвимостей. В результате выводится таблица с описанием проблемы, уровнем риска и рекомендациями по обновлению.
Автоматическое обновление небезопасных пакетов
Для большинства уязвимостей достаточно выполнить:
npm audit fix
Эта команда пытается обновить зависимости до безопасных версий, не нарушая совместимость. Если же найденный дефект требует перехода на мажорную версию, которая может сломать код, доступен более «жёсткий» режим:
npm audit fix --force
Он принудительно применит обновления, даже если они содержат потенциально несовместимые изменения. Такой подход требует последующего тестирования, чтобы убедиться в отсутствии регрессий.
Дополнительные команды, повышающие эффективность работы
npm outdated— выводит список пакетов, у которых доступна более свежая версия, сравнивая установленную, указанную вpackage.jsonи последнюю в реестре.npm ci— предназначена для CI/CD‑конвейеров; устанавливает зависимости строго в соответствии сpackage-lock.json, гарантируя идентичную сборку на каждой машине.npm run <script>— позволяет запускать пользовательские скрипты, определённые в секцииscriptspackage.json. Это удобно для автоматизации тестов, сборки, деплоя и прочих задач.npm link— создает символьную ссылку на локальный пакет, что облегчает разработку и тестирование собственных библиотек в нескольких проектах одновременно.
Эти инструменты делают NPM не просто менеджером пакетов, а полноценным набором средств для контроля жизненного цикла проекта, обеспечения безопасности и поддержания согласованности окружений. Правильное их использование позволяет сократить технический долг, ускорить сборку и минимизировать риск появления уязвимостей в продакшн‑коде.