Processus, arguments et variables d'environnement
argv, process.env et codes de retour de script.
Objectifs
À la fin de cette leçon, vous saurez :
- lire les arguments passés à votre script ;
- accéder aux variables d'environnement avec process.env ;
- comprendre le lien shell → processus que vous avez étudié au chapitre 2.
🔗 Pour vous rafraîchir la mémoire : codes de retour ($?, &&, ||) · variables d'environnement du shell
Le pont avec le chapitre OS
Au chapitre 2, vous avez vu : shell → environnement du processus → programme. Node expose ce contexte via l'objet global process :
shell (export NAME="Paul") → processus node → process.env.NAME === "Paul"
Les arguments de ligne de commande
node saluer.js Paul --formel
console.log(process.argv);
// ["/usr/bin/node", "/home/cours/saluer.js", "Paul", "--formel"]
// ↑ exécutable ↑ script ↑ vos arguments
Les deux premiers éléments sont fixes ; vos arguments commencent à l'index 2 :
const args = process.argv.slice(2); // ["Paul", "--formel"]
const nom = args[0] ?? "inconnu";
const formel = args.includes("--formel");
console.log(formel ? `Bonjour ${nom}.` : `Salut ${nom} !`);
C'est ainsi qu'écrivent leurs CLIs les outils que vous utilisez (git, npm...).
Les variables d'environnement
const port = process.env.PORT ?? "3000";
const cleApi = process.env.CLE_API;
Deux usages fondamentaux :
- Configuration sans réécriture : le même code tourne en dev (port 3000) et en production (port 80) selon l'env.
- Secrets hors code : clés d'API et mots de passe ne sont jamais écrits dans le source — ils arrivent par l'environnement. C'est la règle du projet lui-même (fichier
.envjamais versionné).
PORT=4000 node serveur.js # variable ponctuelle pour ce lancement
export PORT=4000 && node serveur.js # pour toute la session shell
Quitter avec un code de retour
Rappel du chapitre OS : 0 = succès, autre = échec.
if (!fichierExiste) {
console.error("Fichier introuvable");
process.exit(1);
}
process.exit(0); // implicite si tout va bien
Votre script devient utilisable dans des chaînes shell : node verifie.js && node suivant.js ne lancera le second que si le premier a rendu 0.
Exercice
- Écrivez
saluer.jsgérant nom + option--formelcomme ci-dessus. - Faites respecter une variable
LANGUE(fr/en) avec valeur par défaut. - Écrivez
verifie-fichier.js <chemin>qui rend 0 si le fichier existe, 1 sinon — testez avececho $?. - Pourquoi ne jamais écrire une clé d'API en dur dans le code ? Donnez deux raisons.
Résumé
process.argv.slice(2)pour les arguments ;??pour les défauts.process.env= configuration externe + secrets ; jamais en dur dans le code.- Codes de retour : vos scripts s'intègrent aux pipelines shell.
Correction disponibleCherchez d’abord par vous-même.Voir la correction
Correction
Réponses détaillées
Question 4. (a) Tout dépôt Git peut fuiter — le secret dans le code est compromis dès le premier push. (b) Un seul code = une seule configuration impossible : chaque environnement (dev/staging/prod) doit injecter ses propres valeurs. La variable d'environnement sépare le code de sa configuration.