web-dev-qa-db-fra.com

Différence entre `npm start` et` node app.js` lors du démarrage de l'application?

J'ai installé une application à l'aide de la commande express new 'filename'. Je viens d'apprendre que vous pouvez démarrer une application en utilisant:

npm start

Jusqu'ici j'ai utilisé:

node app.js

pour démarrer mon serveur. Quelqu'un sait quelle est la différence entre les deux? Merci.

180
ReneGAED

Depuis le page de manuel , npm start:

exécute le script "start" d'un paquet, s'il en a été fourni. Si aucune version n'est spécifiée, la version "active" est lancée.

Certes, cette description est totalement inutile, et c'est tout ce qu'elle dit. Au moins, c'est plus documenté que socket.io.

Quoi qu'il en soit, ce qui se passe réellement est que npm recherche dans votre fichier package.json , et si vous avez quelque chose comme:

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

alors il le fera. Si npm ne trouve pas votre script de démarrage, sa valeur par défaut est:

noeud serveur.js

254
Yusuf X

Le la documentation a été mise à jour . Ma réponse a des modifications substantielles par rapport à la réponse acceptée: je voulais refléter que la documentation est à jour et que la réponse acceptée comporte quelques liens brisés.

De plus, je ne comprenais pas quand la réponse acceptée indiquait "la valeur par défaut est _node server.js_". Je pense que la documentation clarifie le comportement par défaut:

npm-start

Commencer un paquet

Synopsis

_npm start [-- <args>]_

La description

Ceci exécute une commande arbitraire spécifiée dans la propriété "start" du package de son objet "scripts" . Si aucune propriété "start" n'est spécifiée sur l'objet "scripts", , il s'exécutera _node server.js_.

En résumé, l'exécution de _npm start_ peut faire l'une des choses suivantes:

  1. _npm start {command_name}_: Exécuter une commande arbitraire (c'est-à-dire si une telle commande est spécifiée dans la propriété start de l'objet scripts de package.json)
  2. _npm start_: Sinon si aucune propriété start n'existe (ou si aucun _command_name_ n'est passé): Run _node server.js_, (qui peut ne pas être approprié , par exemple, l'OP n'a pas _server.js_; l'OP exécute nodeapp.js)
  3. J'ai dit que je ne listerais que 2 éléments, mais qu'il y a d'autres possibilités (c'est-à-dire des cas d'erreur). Par exemple, s'il n'y a pas de _package.json_ dans le répertoire où vous exécutez _npm start_, une erreur peut s'afficher: _npm ERR! enoent ENOENT: no such file or directory, open '.\package.json'_
9
The Red Pea