Comment utiliser npm pour démarrer son application node.js

Aujourd’hui, petit tuto pour lancer son application node.js avec npm start, au lieu de node app.js.
L’intérêt est de pouvoir créer des scripts de stop, restart, etc par la suite en suivant cet exemple.

Le principe va être de réaliser un fichier package.json dans votre application node.js qui va fournir non seulement des informations à propos de votre application, mais va vous permettre de la publier ou d’ajouter des scripts.

Voici la documentation officielle à propos de ces scripts : http://npmjs.org/doc/scripts.html

Afin de créer le package.json initial, lancez la commande : npm init.

Il va vous posez plein de questions de manières interactives, répondez-y.

Ensuite éditez le fichier nouvellement créer et à la fin, avant la dernière accolade, ajoutez la section suivante :

1
2
3
"scripts" : {
"start" : "node app.js",
},

Ainsi lorsque vous taperez npm start, cela lancera votre application. Bien sur vous avez la possiblité de coupler cela avec nohup, screen, ou autre et d’utiliser monit derrière pour contrôler que votre application est toujours en ligne.

Petite astuce, vous pouvez spécifier le port de votre application directement dans ce fichier en ajoutant :

1
"config" : { "port" : "8080" },

Ensuite dans votre application, il vous suffit de remplacer le port par process.env.npm_package_config_port.

Il est aussi possible de modifier ce réglage via la commande suivante :

1
npm config set appname:port 8081

Dans le cas, où vous avez plusieurs applications node.js sur la même machine, vous pouvez ainsi laisser le même port dans vos package.json mais utiliser des ports différents en réalité.

Il est aussi possible d’utiliser forever directement dans votre commande :

1
2
3
"scripts" : {
"start" : "forever start app.js"
},

Plus d’infos sur forever : https://github.com/nodejitsu/forever.