В чем разница между npm install и npm run build?

В чем разница между npm install и npm run build?

В моем проекте я заметил, что иногда при запуске npm начинается сбой npm install, но при запуске npm run build он работает просто отлично.

Чем отличается внутренняя работа этих двух целей, а именно install и run build?

Ответ 1

npm install устанавливает зависимости в каталог node_modules/ для проекта node, над которым вы работаете. Вы можете вызвать install в другом проекте node.js(module), чтобы установить его как зависимость для вашего проекта.

npm run build является псевдонимом для npm build, и он ничего не делает, если вы не укажете, что делает "build" в вашем файле package.json. Он позволяет выполнять любые необходимые строительные/подготовительные задачи для вашего проекта, прежде чем он будет использоваться в другом проекте.

build вызывается командами link и install, в соответствии с документацией для сборки:

Это команда сантехника, вызванная связью npm и установкой npm.

Ответ 2

  Основное отличие заключается в ::

npm install - это команда npm cli, которая выполняет предопределенную задачу, т.е., как написано Churro, для установки зависимостей, указанных внутри package.json

npm run имя-команды или npm run-script имя-команды (ex. npm run build) также является предварительно заданной командой cli для запуска пользовательских сценариев с именем указано вместо "имя команды". Итак, в этом случае npm run build является Пользовательский скрипт команды с именем "build" и сделает все что угодно указано внутри него (например, echo 'hello world', приведенный в примере ниже package.json).

Понить на заметку ::

1) Еще одна вещь, npm build и npm run build - это две разные вещи, которые npm build будет делать так, как написано Churro, но npm run build будет выполнять пользовательскую работу, написанную внутри package.json

2) И npm build, и npm run build не совпадают. Я имею в виду, что вы не можете указать что-то внутри скрипта пользовательской сборки (npm run build) и ожидать, что npm build сделает то же самое. Попробуйте сделать следующее, чтобы подтвердить это в package.json:

{
  "name": "demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build":"echo 'hello build'"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {},
  "dependencies": {}
}

и запустите npm run build и npm build один за другим, и вы увидите разницу. Для получения дополнительной информации о командах следуйте документации по npm.

Ура !!

Ответ 3

НПМ в 2019 году

npm build больше не существует. Вы должны позвонить npm run build сейчас. Более подробная информация ниже.

TLDR;

npm install: устанавливает зависимости, затем вызывает install из поля package.json scripts.

npm run build: запускает поле сборки из поля package.json scripts.


Поле сценариев NPM

https://docs.npmjs.com/misc/scripts

Есть много вещей, которые вы можете поместить в поле сценариев npm package.json. Посмотрите ссылку на документацию выше над жизненным циклом сценариев - большинство из них имеют пре- и пост-хуки, позволяющие запускать сценарии до/после установки, публикации, удаления, тестирования, запуска, остановки, сжатия, версии.


Усложнять вещи

  • npm install отличается от npm run install
  • npm install устанавливает зависимости package.json, затем запускает package.json scripts.install
    • (По сути, вызывает npm run install после установки зависимостей.
  • npm run install только запускает package.json scripts.install, он не будет устанавливать зависимости.
  • npm build раньше была действительной командой (раньше была такой же, как npm run build), но больше не является; теперь это внутренняя команда. Если вы запустите его, вы получите: npm WARN build npm build called with no arguments. Did you mean to npm run-script build? Вы можете прочитать больше в документации: https://docs.npmjs.com/cli/build

Ответ 4

  • npm install устанавливает зависимости в вашем файле package.json.
  • npm run build запускает скрипт "build" и создает скрипт, который запускает ваше приложение - скажем, server.js
  • npm start запускает скрипт "start", который затем будет "node server.js"

Трудно точно сказать, в чем заключалась проблема, но в основном, если вы посмотрите на конфигурацию ваших скриптов, я бы предположил, что "build" использует какой-то инструмент сборки для создания вашего приложения, в то время как "start" предполагает, что сборка выполнена, но затем происходит сбой, если файла там нет

Вероятно, вы используете bower или grunt - я помню, что типичное grunt-приложение определит эти сценарии, а также "чистый" сценарий для удаления последней сборки.

Инструменты сборки, как правило, создают файлы в папке bin/, dist/или build/, которые затем запускает стартовый скрипт, например, "node build/server.js". Когда ваш npm start завершается неудачно, это возможно потому, что вы вызвали npm clean или аналогичный, чтобы удалить последнюю сборку, чтобы файл приложения отсутствовал, что вызвало сбой запуска npm.

Исходный код сборки npm - чтобы затронуть обсуждение в этом вопросе - находится на github, чтобы вы могли посмотреть, если хотите. Если вы запускаете npm build напрямую и у вас определен сценарий "build", он завершится с ошибкой, в которой вас npm run-script build вызвать ваш скрипт сборки как npm run-script build так что он не совпадает с npm run script.

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