HOWTO · Node.js

Créer et stocker des configurations dans Node.js

Ce didacticiel montre comment créer et stocker des configurations dans Node.js.

Sur cette page

Une configuration centralisée sépare les réglages, comme les ports et les hôtes de base de données, de la logique de l’application. Le package npm config charge la configuration d’une application Node.js et fournit au code un point d’accès unique à ces réglages. Commencez par un fichier de valeurs par défaut, puis ajoutez des fichiers propres à chaque environnement si le développement, les tests, la préproduction et la production nécessitent des valeurs différentes. Les exemples ci-dessous utilisent JSON et ne nécessitent pas Express.

Installer node-config pour créer et stocker des configurations dans Node.js

Depuis le répertoire de votre projet, installez le package npm nommé config avec npm install config. npm l’enregistre dans package.json afin que cette dépendance soit disponible lorsque le projet est installé ailleurs. Le nom du package est config ; node-config est une abréviation courante, mais ce n’est pas le nom à transmettre à npm.

Créez config/default.json pour les valeurs partagées par l’application. En JSON, les noms de propriétés et les chaînes de caractères doivent être entourés de guillemets doubles. Par exemple, le fichier peut contenir {"server":{"port":3000},"db":{"host":"localhost","port":27017,"name":"mongodb"}}. Évitez de stocker des secrets dans des fichiers suivis par le contrôle de version ; fournissez les identifiants via l’environnement de déploiement ou un gestionnaire de secrets.

Exécutez cet exemple :

const defaults = {
  server: { port: 3000 },
  db: { host: "localhost", port: 27017, name: "mongodb" }
};

console.log(defaults.server.port, defaults.db.host);
3000 localhost

Cet exemple JavaScript autonome s’exécute correctement et affiche 3000 localhost. Dans votre application, chargez le package avec const config = require("config"), puis lisez une valeur avec config.get("server.port") ; procédez de la même façon pour db.host. L’exemple de code ci-dessus utilise des objets JavaScript uniquement pour clarifier le chemin d’accès aux propriétés ; le fichier de configuration reste au format JSON.

Pour configurer un environnement particulier, ajoutez un fichier tel que config/production.json contenant uniquement les valeurs qui diffèrent des valeurs par défaut. Définissez NODE_ENV pour indiquer l’environnement de déploiement au démarrage de l’application. NODE_CONFIG est la variable d’environnement du package qui permet de fournir des surcharges de configuration. Pour connaître la syntaxe exacte de NODE_CONFIG dans la version installée, consultez la documentation officielle sur les variables d’environnement ; pour l’ordre de chargement des fichiers, consultez la documentation officielle sur les fichiers de configuration.

Utilisez un JSON valide dans chaque fichier .json et gardez un format de configuration cohérent. Les noms de fichiers et les valeurs ci-dessus sont des exemples à adapter aux réglages de votre application. La prise en charge de YAML, JSON5 et HJSON peut dépendre de la version du package et de sa configuration ; vérifiez-la avant d’utiliser ces formats. Une configuration de base ne nécessite que package.json, config/default.json et du code applicatif qui lit les réglages avec config.get.