¿Diferencia entre `npm start` y` node app.js`, al iniciar la aplicación?

188

He instalado una aplicación usando el comando express new 'filename'. Acabo de enterarme de que puedes iniciar una aplicación usando:

npm start

Hasta ahora he usado:

node app.js

para iniciar mi servidor Alguien sabe cuál es la diferencia entre los dos? Gracias.

Renegado
fuente

Respuestas:

267

Desde la página del manual, npm start:

ejecuta el script de "inicio" de un paquete, si se proporcionó uno. Si no se especifica ninguna versión, entonces inicia la versión "activa".

Es cierto que esa descripción es completamente inútil, y eso es todo lo que dice. Al menos está más documentado que socket.io.

De todos modos, lo que realmente sucede es que npm se ve en su archivo package.json , y si tiene algo como

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

entonces lo hará. Si npm no puede encontrar su script de inicio, su valor predeterminado es:

nodo server.js

 

Yusuf X
fuente
44
Ah, ya veo. Es esencialmente lo mismo, a menos que elija ejecutar más scripts en tiempo de compilación.
ReneGAED
1
Si normalmente escribe "node server.js", entonces sí.
Yusuf X
1
Creé una nueva aplicación, npm start no funciona. para la aplicación anterior está funcionando bien. ¿alguna sugerencia?
alumno
1
Por ejemplo, "node app.js" no recogerá los cambios del enrutador, mientras que "npm start" lo hará, ya que ejecuta el script de inicio package.json (como "node ./bin/www")
Igor Vaschuk
1
si comienza con 'npm', puede reiniciar la aplicación simplemente escribiendo 'rs' en la consola.
Elf
10

La documentación ha sido actualizada . Mi respuesta tiene cambios sustanciales frente a la respuesta aceptada: quería reflejar que la documentación está actualizada y la respuesta aceptada tiene algunos enlaces rotos.

Además, no entendí cuando la respuesta aceptada decía "por defecto node server.js". Creo que la documentación aclara el comportamiento predeterminado:

npm-start

Comience un paquete

Sinopsis

npm start [-- <args>]

Descripción

Esto ejecuta un comando arbitrario especificado en la " start" propiedad del paquete de su " scripts" objeto del paquete . Si no startse especifica ninguna propiedad " scripts" en el objeto " ", se ejecutará node server.js.

En resumen, correr npm startpodría hacer una de dos cosas:

  1. npm start {command_name}: Ejecute un comando arbitrario (es decir, si dicho comando se especifica en la startpropiedad del scriptsobjeto package.json )
  2. npm start: De lo contrario, si no startexiste ninguna propiedad (o no command_namese pasa ninguna ): Ejecutar node server.js, (lo que puede no ser apropiado , por ejemplo, el OP no tiene server.js; el OP se ejecuta nodeapp.js)
  3. Dije que enumeraría solo 2 elementos, pero hay otras posibilidades (es decir, casos de error). Por ejemplo, si no hay ningún package.jsondirectorio en el que ejecute npm start, puede ver un error:npm ERR! enoent ENOENT: no such file or directory, open '.\package.json'
El guisante rojo
fuente