Qual é a diferença entre npm install
e npm run build
?
Percebi em meu projeto que às vezes o npm começa a falhar quando npm install
é executado, mas, ao ser executado npm run build
, funciona perfeitamente.
Como o funcionamento interno desses dois alvos é específico install
e run build
difere?
node.js
npm
npm-install
BalajiK
fonte
fonte
Respostas:
npm install
instala dependências nonode_modules/
diretório, para o projeto de nó em que você está trabalhando. Você pode chamarinstall
outro projeto node.js (módulo), para instalá-lo como uma dependência para seu projeto.npm run build
é um alias paranpm build
e não faz nada a menos que você especifique o que "build" faz em seu arquivo package.json. Ele permite que você execute quaisquer tarefas de construção / preparação necessárias para o seu projeto, antes de ser usado em outro projeto.build
é chamado pelos comandoslink
einstall
, de acordo com a documentação do build :fonte
npm run build
e nãonpm build
são os mesmos. Eu irei votar a favor novamente se você puder provar que eles são realmente iguais ou corrigir sua resposta.npm build
enpm run build
não são os mesmos. IMHO, Talvez a resposta acima de @churro precise ser corrigida. Por favor corrija-me se eu estiver errado. stackoverflow.com/questions/29939697/…NPM em 2019
npm build
não existe mais. Você deve ligarnpm run build
agora. Mais informações abaixo.TLDR;
npm install
: instala dependências e chama oinstall
dopackage.json
scripts
campo.npm run build
: executa o campo de construção a partir dopackage.json
scripts
campo.Campo de Scripts NPM
https://docs.npmjs.com/misc/scripts
Há muitas coisas que você pode colocar no
package.json
campo de scripts npm . Confira o link de documentação acima mais acima do ciclo de vida dos scripts - a maioria tem pré e pós ganchos que você pode executar scripts antes / depois de instalar, publicar, desinstalar, testar, iniciar, parar, encolher, versão.Para complicar as coisas
npm install
não é o mesmo quenpm run install
npm install
instalapackage.json
dependências e, em seguida, executa opackage.json
scripts.install
npm run install
depois que as dependências são instaladas.npm run install
executa apenas opackage.json
scripts.install
, não instalará dependências .npm build
costumava ser um comando válido (costumava ser o mesmo quenpm run build
), mas não é mais; agora é um comando interno. Se você executá-lo, obterá:npm WARN build npm build called with no arguments. Did you mean to npm run-script build?
Você pode ler mais na documentação: https://docs.npmjs.com/cli/buildfonte
npm build
que não existe mais. Ele ainda existe no sentido de que é conhecido / especial para o npm, pois reage com o aviso que você mencionou no final. Essencialmente, não faz nada agora. Essa resposta a outra pergunta deu o menor resumo donpm build
vnpm run build
.Ponits a serem observados:
1) Mais uma coisa,
npm build
enpm run build
duas coisas diferentesnpm build
farão conforme escrito por Churro, masnpm run build
farão um trabalho personalizado escrito por dentropackage.json
2) E
npm build
enpm run build
não são iguais. O que quero dizer é que você não pode especificar algo dentro donpm run build
script build ( ) customizado e esperarnpm build
fazer o mesmo. Tente o seguinte para verificar em seupackage.json
:e correr
npm run build
enpm build
um por um e você vai ver a diferença. Para mais informações sobre comandos, siga a documentação do npm .Felicidades!!
fonte
npm run build
enpm build
. Ok, então eles não são iguais, de que maneira? Então a resposta de @ Churro está incorreta?npm build
que permanece permanece um mistério. Seria bom saber disso. Pelo que eu posso dizer, "npm build
farei conforme escrito por Churro" não é verdade. Churro disse que faria o que está especificadopackage.json
para obuild
comando (conforme definido nascripts
seção, suponho). Mas é isso quenpm run build
faz, enpm build
não executa o comando build especificado napackage.json
scripts
seção. A menos que haja alguma outra maneira de definir o quenpm build
deve ser feito nopackage.json
, o que não é explicado aqui, nem por Churro (nem nos documentos do NPM, eu acho, infelizmente).npm build
disse npm WARN buildnpm build
chamado sem argumentos. Você quisnpm run-script build
? . Acho que não fez nada. Depois de passar um tempo lendo todas as respostas aqui e tentando fazer isso sozinho, ainda não consigo dizer qual é o propósito denpm build
:(.npm install
instala as dependências em sua configuração package.json.npm run build
executa o script "build" e cria um script que executa seu aplicativo - digamos server.jsnpm start
executa o script "start" que será "node server.js"É difícil dizer exatamente qual era o problema, mas basicamente se você olhar para a configuração de seus scripts, eu acho que "build" usa algum tipo de ferramenta de construção para criar seu aplicativo, enquanto "start" assume que a construção foi feita, mas falha se o arquivo não está lá.
Você provavelmente está usando o bower ou o grunt - pareço lembrar que um aplicativo grunt típico terá definido esses scripts, bem como um script "limpo" para excluir a última compilação.
As ferramentas de construção tendem a criar um arquivo em uma pasta bin /, dist / ou build / que o script de início chama - por exemplo, "node build / server.js". Quando o seu
npm start
falha, provavelmente é porque você chamounpm clean
ou algo semelhante para excluir a compilação mais recente, de forma que o arquivo do aplicativo não esteja presente, causando a falha do npm.O código-fonte do npm build - para tocar na discussão desta questão - está no github para você dar uma olhada, se desejar. Se você executar
npm build
diretamente e tiver um script de "construção" definido, ele sairá com um erro solicitando que você chame seu script de construção,npm run-script build
pois não é o mesmo quenpm run script
.Não tenho certeza do que
npm build
significa, mas parece estar relacionado a scripts de pós-instalação e empacotamento em dependências. Presumo que isso pode ser feito para garantir que quaisquer scripts de compilação CLI ou bibliotecas nativas exigidas pelas dependências sejam construídas para o ambiente específico após o download do pacote. É por isso que o link e a instalação chamam esse script.fonte