Разница между npx и npm?

Я только что начал Обучение npx create-react-app my-app и facebook помогает упростить первоначальную настройку, предоставив следующий готовый проект. Ссылка на учетную запись Facebook на Github: https://github.com/facebook/create-react-app Если мне нужно установить проект скелета, я должен ввести npx create-react-app my-appкоманду командной строки. Мне было интересно, почему учетная запись facebook в Github имеет, npm create-react-app my-appа не NPX?

javascript,npm,

9

Ответов: 4


10

NPM:

Веб-разработчики могут иметь десятки проектов на своих машинах разработки, и каждый проект имеет свой собственный набор установленных NPM зависимостей. Несколько лет назад обычные рекомендации для работы с приложениями CLI, такими как Grunt или Gulp, заключались в их установке локально в каждом проекте и в глобальном масштабе, чтобы их можно было легко запустить из командной строки.

Но установка глобально вызвала столько проблем, сколько она решила. Проекты могут зависеть от разных версий инструментов командной строки и загрязнять операционную систему множеством инструментов CLI для конкретного развития. Сегодня большинство разработчиков предпочитают устанавливать инструменты локально и оставлять это на этом.

Локальные версии инструментов позволяют разработчикам извлекать проекты из GitHub, не беспокоясь о несовместимости с глобально установленными версиями инструментов. packages.json может просто установить локальные версии, и вы хорошо поедете. Но проектные установки не без проблем: как вы запускаете правильную версию инструмента, не указав точное местоположение в проекте или не играя с псевдонимами?

Это проблема node_modules / .bin / solves. Новый инструмент, включенный в NPM 5.2, / usr / local / bin, представляет собой небольшую утилиту, которая достаточно умна, чтобы запускать нужное приложение, когда оно вызывается из проекта.

Если вы хотите запустить проект-локальную версию мокко, например, вы можете запустить npx mocha внутри проекта, и он будет делать то, что вы ожидаете.

Полезным преимуществом npx является то, что он автоматически установит пакеты npm, которые уже не установлены. Итак, как указывает разработчик инструмента Kat Marchan, вы можете запустить npx benny-hill, не имея дело с Benny Hill, загрязняющим глобальную среду.

Если вы хотите взять npx для вращения, обновите последнюю версию npm.


9

Представляем npx: бегун для пакета npm

NPX- Инструмент для выполнения пакетов узлов.
NPM- Управляет пакеты , но делает жизнь легко выполнения любого.

NPMсам по себе не просто запускает какой-либо пакет. он не запускает никакой пакет в действительности. Если вы хотите запустить пакет с помощью NPM, вы должны указать этот пакет в своем файле, вnpm install some-package

Когда исполняемые файлы устанавливаются через пакеты npm, ссылки npm на них:

  1. В локальных установках они связаны с каталогом.$ some-package
  2. В глобальных установках они связаны с глобальным каталогом bin / (например ).$ ./node_modules/.bin/some-package

Документацию, которую вы должны прочитать


NPM:

Можно установить пакет локально в определенном проекте:

packages.json

Теперь скажем, вы хотите, чтобы NodeJS выполнил этот пакет из командной строки:

scripts

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

Чтобы исправить это и запустить его, вы должны ввести локальный путь:

{
  "name": "whatever",
  "version": "1.0.0",
  "scripts": {
    "some-package": "some-package"
  }
}

Вы можете технически запустить локально установленный пакет, отредактировав npm run-scriptфайл и добавив этот пакет в npm runраздел:

npm run some-package

Затем запустите сценарий, используя npx(или <command>):

$PATH

NPX:

npxбудет проверять, some-packageсуществует ли в или в локальных бинарниках проекта, и выполнять его. Итак, для приведенного выше примера, если вы хотите выполнить локально установленный пакет, вам нужно всего лишь ввести:npx some-packagenpx

$ npx create-react-app my-app

Другим важным преимуществом npxявляется возможность выполнить пакет, который ранее не был установлен ::

react

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


Связанные вопросы:

  1. Как использовать пакет, установленный локально в node_modules?
  2. NPM: как создать папку ./node_modules/.bin?
  3. Как запустить js-файл с помощью сценариев npm?

1

npx - это бегун для пакетов npm (x, вероятно, означает eXecute). Типичное использование - загрузка и запуск пакета временно или для испытаний.

create-response-app - это пакет npm, который, как ожидается, будет запускаться только один раз в жизненном цикле проекта. Следовательно, предпочтительно использовать npx для установки и запуска его за один шаг.

Как упоминалось в man-странице https://www.npmjs.com/package/npx , npx может запускать команды в PATH или из node_modules / .bin по умолчанию.

Примечание. С некоторыми копаниями мы можем обнаружить, что приложение create-react-app указывает на файл Javascript (возможно, на /usr/lib/node_modules/create-react-app/index.js в системах Linux), который выполняется в среде узла , Это просто глобальный инструмент, который выполняет некоторые проверки. Фактическая настройка выполняется с помощью сценариев реагирования, последняя версия которых установлена ??в проекте. Для получения дополнительной информации см. Https://github.com/facebook/create-react-app .


-1

NPX - это бегун для пакетов и инструмент, который можно использовать с NPM. Я не знаю много об этом, но я нашел эту ссылку, которая могла бы помочь.

https://medium.com/@maybekatz/introducing-npx-an-npm-package-runner-55f7d4bd282b

Извините, я не мог полностью уточнить.

JavaScript, НПМ,
Похожие вопросы