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 start.
Исходный код сборки npm - чтобы коснуться обсуждения в этом вопросе - находится в github, чтобы вы могли посмотреть, если хотите. Если вы запустите npm build
напрямую и у вас определен сценарий "сборки", он завершится с ошибкой, предлагающей вам вызвать сценарий сборки, npm run-script build
поэтому он не совпадает с npm run script
.
Я не совсем уверен, что npm build
делает, но, похоже, это связано с постинсталляционными и упаковочными скриптами в зависимостях. Я предполагаю, что это может гарантировать, что любые сценарии сборки CLI или собственные библиотеки, требуемые зависимостями, созданы для конкретной среды после загрузки пакета. Вот почему ссылка и установка вызывают этот скрипт.