Kodokon kodokon.com

Scripts en ligne de commande : arguments, environnement et codes de sortie

Vous écrivez des scripts qui reçoivent des arguments avec process.argv, lisent des variables d'environnement et renvoient un code de sortie.

8 min · 3 questions

Ouvrir cette leçon dans Kodokon

Vous utilisez déjà des programmes en ligne de commande : node, npm, git... Chacun accepte des arguments, les mots tapés après son nom, qui modifient son comportement. Écrivons les nôtres. Node expose l'objet global process, qui décrit le programme en cours d'exécution - vous l'avez croisé avec process.version. Sa propriété process.argv est un tableau qui contient : à l'index 0, le chemin de Node ; à l'index 1, le chemin de votre script ; et à partir de l'index 2, les arguments réellement tapés par l'utilisateur.

JAVASCRIPT
console.log(process.argv);

const args = process.argv.slice(2);
console.log("Vos arguments :", args);
Enregistrez ce code dans args.js puis lancez node args.js pomme poire : slice(2) isole les arguments utiles.

Deuxième source d'information : les variables d'environnement. Ce sont des paires nom/valeur fournies au programme par le système au moment du lancement. Elles servent à la configuration : clé d'API secrète, mode debug, adresse d'une base de données... On les lit dans l'objet process.env. Une variable absente vaut undefined : prévoyez toujours une valeur par défaut, par exemple avec l'opérateur ??.

JAVASCRIPT
const level = process.env.LOG_LEVEL ?? "info";

console.log("Niveau de log :", level);
Enregistrez ce code dans config.js : sans variable définie, le niveau vaut info.
BASH
LOG_LEVEL=debug node config.js
Sous macOS et Linux, on définit une variable juste avant la commande : le script affiche alors debug.

Quand un programme se termine, il renvoie au système un code de sortie : un nombre qui résume comment cela s'est passé. Convention universelle : 0 signifie « succès », toute autre valeur signale une erreur - c'est ce que les autres outils et scripts consultent pour savoir si tout a fonctionné. process.exit(1) arrête immédiatement le script avec le code 1. Utilisez aussi console.error pour les messages d'erreur : il écrit sur la sortie d'erreur (stderr), un canal séparé des affichages normaux. Assemblons tout dans un script complet.

JAVASCRIPT
const name = process.argv[2];

if (!name) {
  console.error("Usage : node greet.js <nom>");
  process.exit(1);
}

console.log(`Bonjour, ${name} !`);
Sans argument, greet.js explique son usage et sort avec le code 1 ; avec un prénom, il salue et termine avec le code 0.

Quiz de validation

Vérifiez que vous avez bien retenu les points clés de cette leçon.

  1. Dans process.argv, où se trouve le premier argument tapé par l'utilisateur ?
    • À l'index 0
    • À l'index 2
    • À l'index 1
    • Toujours au dernier index
  2. Quel code de sortie signale qu'un programme s'est terminé avec succès ?
    • 0
    • 1
    • 200
  3. Comment lire la variable d'environnement API_KEY dans un script Node ?
    • process.argv.API_KEY
    • env.get("API_KEY")
    • process.env.API_KEY