Diferença entre `npm start` e` node app.js`, ao iniciar o app?

188

Eu tenho instalado um aplicativo usando o comando express new 'filename'. Acabei de aprender que você pode iniciar um aplicativo usando:

npm start

Até agora eu tenho usado:

node app.js

para iniciar meu servidor. Alguém sabe qual é a diferença entre os dois? Obrigado.

ReneGAED
fonte

Respostas:

267

Na página do manual, npm start:

executa o script "start" de um pacote, se houver algum. Se nenhuma versão for especificada, ela inicia a versão "ativa".

É certo que essa descrição é completamente inútil, e é tudo o que diz. Pelo menos, é mais documentado que o socket.io.

De qualquer forma, o que realmente acontece é que o npm aparece no seu arquivo package.json e se você tem algo como

"scripts": {"start": "coffee server.coffee"}

então ele fará isso. Se o npm não conseguir encontrar o script inicial, o padrão será:

nó server.js

 

Yusuf X
fonte
4
Ah entendo. Portanto, é essencialmente a mesma coisa, a menos que você opte por executar mais scripts em tempo de compilação.
ReneGAED
1
Se você normalmente digita "node server.js", então sim.
Yusuf X
1
Eu criei um novo aplicativo, o npm start não está funcionando. para aplicativos antigos, ele está funcionando bem. alguma sugestão?
aluno
1
Por exemplo, "nó app.js" não vai pegar roteador alterações, enquanto "npm começar" irá, como ele executa roteiro package.json início (como "nó ./bin/www")
Igor Vaschuk
1
se você começar com 'npm', ele poderá reiniciar o aplicativo digitando 'rs' no console.
Elf
10

A documentação foi atualizada . Minha resposta tem alterações substanciais em relação à resposta aceita: queria refletir que a documentação está atualizada e a resposta aceita possui alguns links quebrados.

Além disso, não entendi quando a resposta aceita dizia "o padrão é node server.js". Eu acho que a documentação esclarece o comportamento padrão:

npm-start

Iniciar um pacote

Sinopse

npm start [-- <args>]

Descrição

Isso executa um comando arbitrário especificado na startpropriedade " " do pacote " " do scriptsobjeto . Se nenhuma startpropriedade " " for especificada no scriptsobjeto " ", ela será executada node server.js.

Em resumo, a execução npm startpode fazer uma de duas coisas:

  1. npm start {command_name}: Execute um comando arbitrário (ou seja, se esse comando for especificado na startpropriedade do scriptsobjeto package.json )
  2. npm start: Caso startcontrário, se nenhuma propriedade existir (ou nenhuma command_namefor aprovada): Run node server.js(que pode não ser apropriado , por exemplo, o OP não possui server.js; o OP é executado nodeapp.js)
  3. Eu disse que listaria apenas 2 itens, mas existem outras possibilidades (ou seja, casos de erro). Por exemplo, se não houver package.jsonno diretório em que você executa npm start, você poderá ver um erro:npm ERR! enoent ENOENT: no such file or directory, open '.\package.json'
A Ervilha Vermelha
fonte