Comment passer des arguments de ligne de commande à un programme Node.js ?

J'ai un serveur web écrit en [Node.js][1] et je voudrais le lancer avec un dossier spécifique. Je ne sais pas comment accéder aux arguments en JavaScript. J'exécute Node comme ceci :

$ node server.js folder

ici server.js est mon code serveur. L'aide de Node.js dit que c'est possible :

$ node -h
Usage: node [options] script.js [arguments]

Comment puis-je accéder à ces arguments en JavaScript ? Je n'ai pas réussi à trouver cette information sur le web.

[1] : http://en.wikipedia.org/wiki/Node.js

Solution

Méthode standard (pas de bibliothèque)

Les arguments sont stockés dans le fichier process.argv.

Voici la documentation du noeud sur la gestion des arguments de la ligne de commande :

process.argv est un tableau contenant les arguments de la ligne de commande. Le premier élément sera 'node', le second élément sera le nom du fichier JavaScript. Les éléments suivants seront des arguments de ligne de commande supplémentaires.

// print process.argv
process.argv.forEach(function (val, index, array) {
  console.log(index + ': ' + val);
});

Ceci va générer :

$ node process-2.js one two=three four
0: node
1: /Users/mjr/work/node/process-2.js
2: one
3: two=three
4: four
Commentaires (8)

Pour normaliser les arguments comme une fonction javascript normale recevrait, je fais ceci dans mes scripts shell node.js :

var args = process.argv.slice(2);

Notez que le premier argument est généralement le chemin vers nodejs, et le second est l'emplacement du script que vous exécutez.

Commentaires (12)

Optimiste (node-optimist)

Consultez la bibliothèque optimiste, c'est bien mieux que d'analyser les options de la ligne de commande à la main.

Mise à jour

Optimist est déprécié. Essayez yargs qui est un fork actif d'optimist.

Commentaires (4)