npm давно перестал быть просто установщиком пакетов. Сегодня это еще и нормальный рабочий интерфейс к проекту: через него удобно запускать скрипты, проверять зависимости, открывать документацию и разбираться, что именно происходит в node_modules.

Проблема в том, что многие команды остаются “фоновыми”: о них знаешь, когда случайно встретил в чужом проекте или документации. В итоге часть рутинных действий все равно делается вручную.

Ниже собраны семь приемов npm, которые действительно помогают в повседневной разработке, а не выглядят как редкие CLI-фокусы.

Быстрое создание package.json

Когда нужен новый проект, часто достаточно стартового package.json без диалога из десяти вопросов:

npm init -y

Эта команда создает базовый файл сразу. Потом его можно точечно поправить через редактор или через npm pkg:

npm pkg set type=module
npm pkg set scripts.dev="vite"
npm pkg set scripts.build="vite build"

Такой подход быстрее, чем отвечать на вопросы в интерактивном режиме, особенно когда ты все равно меняешь скрипты и метаданные вручную.

Установка нескольких пакетов одной командой

Если пакетный набор понятен заранее, устанавливай его одной командой:

npm install react react-dom
npm install -D typescript vite eslint

Это быстрее и лучше отражает намерение: видно, какие зависимости идут вместе. Единственное правило простое: не копируй длинные команды вслепую. Если сомневаешься в названии пакета, сначала проверь его отдельно.

Просмотр доступных скриптов

Чтобы увидеть все скрипты проекта, не обязательно открывать package.json:

npm run

Команда выводит список доступных scripts и помогает быстро вспомнить, как именно в проекте называются build, test, lint, dev и остальные команды.

Это особенно полезно в чужих репозиториях, где набор скриптов отличается от твоих привычек.

Запуск локальных CLI через npm exec

Если пакет установлен локально, не нужно помнить путь до бинаря в node_modules/.bin. Для этого есть npm exec:

npm exec eslint . --ext .js,.ts,.tsx
npm exec tsc -- --noEmit

Команда запускает локальный бинарь в контексте проекта. Старое сокращение npx все еще используется, но npm exec точнее описывает, что происходит.

Это удобно по двум причинам:

  • не нужно устанавливать инструменты глобально;
  • проект запускается с той версией CLI, которая зафиксирована у него в зависимостях.

Проверка дерева зависимостей

Когда нужно быстро понять, что реально установлено в проекте, используй npm ls:

npm ls --depth=0

Так ты увидишь только верхний уровень зависимостей, без огромного дерева вложенных пакетов.

Для глобально установленных пакетов работает тот же прием:

npm ls -g --depth=0

Это полезно, когда нужно найти старый глобальный CLI, который неожиданно влияет на окружение.

Поиск устаревших и дублирующихся пакетов

Чтобы понять, какие зависимости отстали, запускай:

npm outdated

Команда показывает три значения:

  • current - что установлено сейчас;
  • wanted - последняя версия, подходящая под текущий диапазон в package.json;
  • latest - вообще самая свежая версия в реестре.

Если нужно обновить зависимости в рамках текущих версионных ограничений:

npm update

Если есть подозрение на лишние дубли в дереве зависимостей, можно запустить:

npm dedupe

npm dedupe не делает проект “магически быстрее”, но помогает упростить дерево зависимостей там, где это возможно без изменения semver-ограничений.

Открытие документации и репозитория из терминала

Когда нужно быстро перейти к пакету, npm умеет открывать его страницы напрямую:

npm docs react
npm repo react
npm home react

Что делает каждая команда:

  • npm docs открывает документацию пакета;
  • npm repo открывает репозиторий;
  • npm home открывает домашнюю страницу из метаданных пакета.

Это банально, но экономит переключения между терминалом, поиском и вкладками браузера.

Итог

Полезность npm обычно не в одной “секретной” команде, а в том, что он закрывает много рутинных задач без дополнительных инструментов. Чем реже ты вручную лезешь в node_modules, ищешь бинарь или открываешь документацию через поисковик, тем спокойнее ежедневный workflow.

Если брать минимальный набор на каждый день, я бы оставил npm run, npm exec, npm outdated и npm docs. Этого уже достаточно, чтобы терминал вокруг проекта стал заметно удобнее.