В чем разница между npm и npx

Если вы работаете с Node, то должны были сталкиваться сталкиваться с npm и npx. Хотя они звучат похоже и оба являются неотъемлемыми частями экосистемы Node, они служат разным целям. В этом посте будут рассмотрены различия между npm и npx, что поможет вам понять, когда и почему использовать каждый из них.

Что такое npm?

npm - это сокращение от Node Package Manager, является менеджером пакетов по умолчанию для Node. Он позволяет разработчикам устанавливать, делиться и управлять пакетами (библиотеками или модулями кода) в своих проектах.

Вот несколько примеров когда используется npm:

  • установка новых зависимостей в проект
npm install <имя пакета>
  • управление версиями пакетов, блокировка определенных версий библиотек для обеспечения единообразия сборок
  • запуск скриптов, специфичных для проекта которые определены в файле package.json

Что такое npx?

npx — это инструмент, для выполнения скриптов без их установки. В то время как npm управляет зависимостями и пакетами, npx предназначен для выполнения пакетов Node, особенно инструментов CLI, без их глобальной установки

Ключевые различия между npm и npx

1. Установка пакета vs выполнение скрипта

  • NPM: Когда вы устанавливаете пакет с помощью npm, он либо устанавливает пакет глобально, либо локально в каталог вашего проекта. Это означает, что вам сначала нужно установить пакет, прежде чем вы сможете его использовать.
npm install -g create-react-app create-react-app my-app
  • NPX: С npx вы можете запускать инструменты CLI или исполняемые файлы без их глобальной установки. Например, вы можете запустить create-react-app без глобальной установки.
npx create-react-app my-app

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

2. Автоматическая обработка пакетов

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

Например:

npx cowsay "Hello, World!"

Это загрузит пакет cowsay, если он не установлен, запустит его, а затем очистит его.

3. Исполнение скриптов в package.json

При запуске команды, определенной в скриптах package.json с использованием npm, вы должны написать:

npm run my-script

Но с помощью npx вы можете запускать исполняемые команды напрямую:

npx my-script

Это особенно полезно, если скрипт явно не определен в package.json.

Когда использовать npm?

  • Управление зависимостями: используйте npm для установки, обновления и удаления зависимостей проекта.
  • Запуск скриптов проекта: скрипты которые определены в package.json.
  • Управление версиями пакетов: блокировка определенных версий библиотек.

Когда использовать npx?

  • Однократное выполнение пакета: используйте npx для пакетов, которые вы не хотите устанавливать глобально, например, для инструментов CLI, которые вы будете использовать только один раз.
  • Запуск исполняемых файлов: для таких команд, как create-react-app, npx позволяет запускать их без глобальной установки.

Наконец, и npm, и npx являются важными инструментами в экосистеме Node, но они служат разным целям. Используйте npm для управления зависимостями вашего проекта, а npx — для выполнения пакетов без постоянной установки.

Начать дискуссию