Comment récupérer les informations de la ligne de commande en Node.js ?

Vous avez déjà passé un temps fou à essayer de créer une ligne de commande avec une commande -h  et à créer des raccourcis pour chaque options ? Sans parler du fait qu'il faut parser le tableau contenu dans la variable process.argv.

Les bases

Je viens de découvrir commander. C'est un package NPM qui va vous permettre de gérer votre ligne de commande simplement. Facile pour vous et user-friendly.

Après l'avoir installé avec npm i commander. On va faire un gestionnaire d'identité :

Dans un fichier cli.js, j'écris :

 

const program = require('commander');

program
.option('-n --name <name>', 'Pour enregistrer votre nom');

program.parse();

console.log(program.opts().name); // Affichera le nom

Grâce à ces quelques lignes, j'ai accès aux commandes :

  • node cli.js -n Jénaïc,
  • node cli.js --name Jénaïc et,
  • node cli.js -h qui va m'afficher -n, --name       Pour enregistrer votre nom

Par contre, si je tape la commande :

node cli.js -n

Ma console va me renvoyer :

error: option '-n, --name <name>' argument missing

Puisque le nom (le paramètre name) est obligatoire.

Valeurs par défaut

On reprend notre programme :

 

const program = require('commander');

program
.option('-n --name <name>', 'Pour enregistrer votre nom', 'anonyme');

program.parse();

console.log(program.opts().name); // Affichera le nom

On y a ajouté un 4è paramètre sur l'option du nom. Comme ça, quand on tape la commande sans paramètre :

node cli.js -n

Il affichera dans la console le texte : anonyme.

Gestion des booléens

Parfois, on ne veut pas entrer une valeur, mais activer une option dans notre code. Par exemple si je veux créer un mode debug je vais ajouter l'option -d sans paramètre.

On reprend notre code

 

const program = require('commander');

program
.option('-n --name <name>', 'Pour enregistrer votre nom', 'anonyme')
.option('-d --debug', 'Pour activer le mode debug');


program.parse();

if (program.opts().debug) console.log('DEBUG MODE!');

console.log(program.opts().name); // Affichera le nom

En ajoutant le -d dans ma commande, je verrais la console du debug :

node cli.js -d -n Jénaïc

Affichera :

DEBUG MODE!
Jénaïc

Et on n'oublie pas que si je fais la commande :

node cli.js -h

On verra que l'option du debug fait aussi partie du message d'explication.

Extrait de live

Lors de cet extrait de live, je me suis essayé pour la première fois avec commander.

Conclusion

Je vous invite à aller sur la documentation pour en savoir plus.

Pour plus de tips, on se retrouve sur Twitch mercredi à 19h pour un live où vous pourrez poser toutes vos questions en direct pendant qu'on code quelque chose de cool.

Pour voir les replays des anciens lives où l'on a créé des sites, app ou jeux, il y a la chaîne YouTube.

Enfin, si vous êtes intéressé.e par la programmation et que vous voulez vous améliorer plus rapidement, regardez nos programmes de formation.

Bonne journée et bon code !

Laisser un commentaire