В чем разница между npm install
и npm run build
?
Я заметил в своем проекте, что иногда npm начинает давать сбой при npm install
выполнении, но после запуска npm run build
он работает нормально.
Как внутренние работы этих двух целей , а именно install
и run build
отличаются?
node.js
npm
npm-install
BalajiK
источник
источник
Ответы:
npm install
устанавливает зависимости вnode_modules/
каталог для проекта узла, над которым вы работаете. Вы можете вызватьinstall
другой проект (модуль) node.js, чтобы установить его как зависимость для вашего проекта.npm run build
является псевдонимом дляnpm build
и ничего не делает, если вы не укажете, что делает "build" в вашем файле package.json. Он позволяет вам выполнять любые необходимые задачи по построению / подготовке вашего проекта перед его использованием в другом проекте.build
вызываетсяlink
иinstall
командами, в соответствии с документацией для сборки :источник
npm run build
иnpm build
являются не то же самое. Я проголосую еще раз, если вы докажете, что они действительно такие же, или исправите свой ответ.npm build
иnpm run build
это не то же самое. ИМХО, возможно, ответ от @churro нужно исправить. Пожалуйста, поправьте меня, если я ошибаюсь. stackoverflow.com/questions/29939697/…НПМ в 2019 году
npm build
больше не существует. Вы должны позвонитьnpm run build
сейчас. Более подробная информация ниже.TL; DR;
npm install
: устанавливает зависимости, затем вызываетinstall
изpackage.json
scripts
поля.npm run build
: запускает поле сборки изpackage.json
scripts
поля.Поле сценариев NPM
https://docs.npmjs.com/misc/scripts
Есть много вещей, которые вы можете поместить в
package.json
поле сценариев npm . Ознакомьтесь с приведенной выше ссылкой на документацию над жизненным циклом скриптов - большинство из них имеют pre и post хуки, с помощью которых вы можете запускать скрипты до / после установки, публикации, удаления, тестирования, запуска, остановки, сжатия, версии.Усложнять вещи
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.источник
npm build
что больше не существует , сбивает с толку . Он по-прежнему существует в том смысле, что он известен / особенный для npm, потому что он реагирует предупреждением, которое вы упоминаете внизу. По сути, сейчас он ничего не делает. Этот ответ на другой вопрос дал кратчайшее резюме поnpm build
сравнениюnpm run build
.Пониц на заметку:
1) Еще одна вещь,
npm build
иnpm run build
это две разные вещи, которыеnpm build
будут делать, как написано Churro, ноnpm run build
будут выполнять индивидуальную работу, написанную внутриpackage.json
2) И
npm build
иnpm run build
не одно и то же. Я имею в виду, что вы не можете указать что-то внутри пользовательскогоnpm run build
скрипта build ( ) и ожидатьnpm build
того же. Попробуйте следующее, чтобы проверить в своемpackage.json
:и запустить
npm run build
иnpm build
один на один , и вы увидите разницу. Для получения дополнительной информации о командах следуйте документации npm .Ура !!
источник
npm run build
иnpm build
. Хорошо, они не такие, в каком смысле? Значит, ответ @Curro неверен?npm build
там остается загадкой. Было бы неплохо это узнать. Насколько я могу судить, «npm build
будет делать , как написано Churro» это не так. Churro сказал , что будет делать то , что указано вpackage.json
дляbuild
команды (как определено вscripts
разделе , я полагаю). Но это то, чтоnpm run build
работает, аnpm build
не запускает команду сборки, указанную вpackage.json
scripts
разделе. Если нет другого способа определить, чтоnpm build
следует делать вpackage.json
файле, который не объясняется здесь или Churro (или, к сожалению, в документах NPM).npm build
сказал, что сборка npm WARN вызываетсяnpm build
без аргументов. Вы хотелиnpm run-script build
? . Я думаю, это ничего не дало. Потратив время на то, чтобы прочитать все ответы здесь и попробовать это сам, я все еще не могу сказать, в чем цельnpm build
:(.npm install
устанавливает зависимости в вашей конфигурации package.json.npm run build
запускает сценарий "build" и создает сценарий, запускающий ваше приложение - скажем, server.jsnpm start
запускает сценарий "start", который затем будет "node server.js"Трудно точно сказать, в чем была проблема, но в основном, если вы посмотрите на конфигурацию своих скриптов, я бы предположил, что «build» использует какой-то инструмент сборки для создания вашего приложения, в то время как «start» предполагает, что сборка была выполнена, но затем терпит неудачу, если файла нет.
Вы, вероятно, используете bower или grunt - я, кажется, помню, что типичное приложение grunt будет определять эти сценарии, а также «чистый» сценарий для удаления последней сборки.
Инструменты сборки обычно создают файл в папке bin /, dist / или build /, которую затем вызывает сценарий запуска - например, «node build / server.js». Когда вы
npm start
терпите неудачу, это, вероятно, связано с тем, что вы вызвалиnpm clean
или похожи на удаление последней сборки, поэтому файл вашего приложения отсутствует, что приводит к сбою npm start.Исходный код сборки npm - чтобы коснуться обсуждения в этом вопросе - находится в github, чтобы вы могли посмотреть, если хотите. Если вы запустите
npm build
напрямую и у вас определен сценарий "сборки", он завершится с ошибкой, предлагающей вам вызвать сценарий сборки,npm run-script build
поэтому он не совпадает сnpm run script
.Я не совсем уверен, что
npm build
делает, но, похоже, это связано с постинсталляционными и упаковочными скриптами в зависимостях. Я предполагаю, что это может гарантировать, что любые сценарии сборки CLI или собственные библиотеки, требуемые зависимостями, созданы для конкретной среды после загрузки пакета. Вот почему ссылка и установка вызывают этот скрипт.источник