Qual é a diferença entre npm install
e npm run build
?
Eu tenho notado no meu projeto que às vezes npm começa a falhar quando a npm install' é executada, mas, ao executar a
npm run build', ela funciona muito bem.
Como é que o funcionamento interno destes dois alvos, nomeadamente "instalar" e "correr", se diferem?
O npm install
instala dependências no diretório node_modules/
, para o projeto do nó em que você'está trabalhando. Você pode chamar install
em outro projeto node.js (módulo), para instalá-lo como uma dependência para o seu projeto.
npm run build' é um apelido para
npm build', e não faz nada a menos que você especifique o que "build" faz no seu arquivo package.json. Ele permite que você execute qualquer tarefa de construção/preparação necessária para o seu projeto, antes que ele seja utilizado em outro projeto.
O comando build' é chamado pelos comandos
link' e `install', de acordo com a documentação para build:
Este é o comando de encanamento chamado por npm link e npm install.
A principal diferença é ::
**npm install*** é um comando de cliente npm que faz a coisa pré-definida, ou seja, como escrito por Churro, para instalar dependências especificadas dentro package.json
npm run *command-name ou npm run-script command-name ( ex. npm run build ) também é um cli-command predefinido para rodar seus scripts personalizados com o nome especificado no lugar de "command-name". Então, neste caso npm run build é um comando de script personalizado com o nome " build" e fará qualquer coisa especificado dentro dele (por exemplo echo 'hello world'*** dado no exemplo package.json abaixo).
Ponits para notar::
Mais uma coisa, npm build
e npm run build
são duas coisas diferentes que o npm build
fará como escrito por Churro, mas o npm run build
fará um trabalho personalizado escrito dentro do package.json
.
E npm build
e npm run build
não são a mesma coisa. O que eu quero dizer é que você não pode especificar alguma coisa dentro do script custom build (npm run build
) e esperar que o npm build
faça o mesmo. Tente verificar o seguinte no seu `package.json':
{
"name": "demo",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build":"echo 'hello build'"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {},
"dependencies": {}
}
e executar npm run build
e npm build
um por um e você verá a diferença. Para mais informações sobre comandos, siga gentilmente npm documentation.
Saúde!!
npm start
executa o "start" script que será então "node server.js"É difícil dizer exatamente qual foi o problema, mas basicamente se você olhar para a configuração dos seus scripts, eu adivinharia isso "build" usa algum tipo de ferramenta de construção para criar sua aplicação enquanto "start" assume que a construção foi feita, mas depois falha se o arquivo não estiver lá.
Você provavelmente está usando bower ou grunt - parece que me lembro que uma típica aplicação grunt terá definido esses scripts assim como um "clean" script para apagar a última compilação.
Ferramentas de construção tendem a criar um arquivo em uma pasta bin/, dist/ ou build/ que o script inicial então chama - por exemplo "node build/server.js". Quando o seu npm start
falha, é provavelmente porque você chamou `npm clean' ou similar para apagar o último build para que o seu arquivo de aplicação não esteja presente causando a falha do npm start.
npm build's código fonte - para tocar na discussão desta questão - está no github para você dar uma olhada, se quiser. Se você executar npm build
diretamente e tiver um "build" script definido, ele sairá com um erro pedindo que você chame seu script de compilação como npm run-script build
, então ele'não é o mesmo que npm run script
.
I'não tenho bem certeza do que o npm build
faz, mas parece estar relacionado a scripts de pós-instalação e empacotamento em dependências. Eu assumo que isto pode estar garantindo que qualquer script de construção CLI's ou bibliotecas nativas requeridas pelas dependências sejam construídas para o ambiente específico após o download do pacote. Por isso, ligue e instale este script.