adeo-prox-api-confit
Confit is a simple, environment-based configuration. confit loads a default JSON configuration file, additionally loading environment-specific files, if applicable. It will also process the loaded files using any configured shortstop protocol handlers.
confit adds support for adding JavaScript-style comments in your json files as each file is processed by shush before being merged into your config.
adeo-prox-api-confit is confit with a multi-directory configuration. You can create configuration in the app directory, or in an other directory on the server.
Installation
npm install adeo-prox-api-confit
Recherche des fichiers de confs.
La lib commence par charger les fichiers de confs présents dans le répertoire config de l'appli, puis dans les répertoires défini par la variable d'environnement EXTERNAL_CONF_PATH, le nom de l'appli et la version majeur de l'appli.
Pour assurer une compatibilité avec la V1 du framework lmfr-fwk-core, la lib recherche egalement le fichier de conf définis par les variables FR_LM_CONFPATH, FR_LM_PLATFORM, FR_LM_ENV, le nom de l'appli et sa version majeurs
Pour chaque répertoire de configuration présents sur le serveur, adeo-fwk-confit applique la gestion de configuration de Confit, à savoir le chargement du fichier config.json puis le fichier <NODE_ENV>.json
loading logic:
(the latest is the most proritary)
`1 - /config/config.json` < `/config/.json``2 - /` if envEXTERNAL_CONF_PATH is a file`2 bis - /config/config.json` < `/config/.json` if envEXTERNAL_CONF_PATH is a directory`3 - /.json` if envEXTERNAL_CONF_PATH is a directory`4 - //config.json``5 - //.json``6 - /-v/config/config.json``7 - /-v/config/.json`
Sucharge par les variables d'environnements
chaque paramètre de la configuration peux etre modifié via les variables d'environnement. Pour cela, setter une variable d'environnement de la manière suivante: CONFIG_<parametter_name_en_majuscule>= Pour les objets, les "." sont transformés en "_"
ATTENTION: Seul la modification est possible. L'ajout de paramète ne l'est pas!
example:
CONFIG_EXPRESS_PORT=4000
Permet de modifier la config:
"express": ,
How to use
Pour acceder à la config dans votre code, de manière Asynchrone
const ConfigL=;ConfigL;ConfigL;base: true development: true
Pour acceder à la config dans votre code, de manière synchrone Attention, cette methode ne doit etre utilisé que lorqu'on est sur que l'api a eu le temps de charger la conf comme dans un controleur d'un serveur express par exemple
const ConfigL=;ConfigL;console;base: true development: true
Exemple de configurations multi-files/multi-env
Dans ${app_directory}
/config/config.json, On y met la configuration par défaut
ATTENTION: pas de mot passe ;)
Dans ${app_directory}
/config/development.json, on y met la configuration pour le poste local developpeur.
Pas besoin de redéfinir tous les attributs, juste ce qui est
differents ou manquant par rapport à la config par defaut.
Sur le serveur de prod (avec variable NODE_ENV='production'
et EXTERNAL_CONF_PATH='/home/nodejs/'
)
dans /home/nodejs/mon-api-v1/production.json
, on y met la configuration pour le serveur de prod.
Pas besoin de redéfinir tout les attributs, juste ce qui est differents ou manquant par rapport à la config par defaut.
Sur le serveur de preprod (avec variable NODE_ENV='preproduction'
et EXTERNAL_CONF_PATH='/home/nodejs/'
)
dans /home/nodejs/mon-api-v1/preproduction.json
, on y met la configuration pour le serveur de prod.
pas besoin de redéfinir tout les attributs, juste ce qui est differents ou manquant par rapport à la config par defaut.
NOTE:
Dans notre exemple, pour le serveur de prod, nous pouvons stocker la configuration dans:
-
Si on n'installe qu'une seule version de l'aplli sur le serveur :
/home/nodejs/ma-conf.json
(avec variableEXTERNAL_CONF_PATH='/home/nodejs/ma-conf.json'
) ou
/home/nodejs/mon-api.json
(avec variableEXTERNAL_CONF_PATH='/home/nodejs'
) -
Si on n'installe qu'une seule version de l'aplli sur le serveur :
/home/nodejs/mon-api/config.json
et/ou
/home/nodejs/mon-api/production.json
(avec variableNODE_ENV='production'
etEXTERNAL_CONF_PATH='/home/nodejs/'
) -
Si on souhaite installer plusieurs versions majeur de l'api sur le serveur:
/home/nodejs/mon-api-v1/config.json
et/ou
/home/nodejs/mon-api-v1/production.json
(avec variableNODE_ENV='production'
etEXTERNAL_CONF_PATH='/home/nodejs/'
) -
Si on souhaite installer plusieurs versions majeur de l'api sur le serveur (compatibilité pour framework lmfr-fwk-core V1)
/home/nodejs/mon-api-v1/BCIT/production/config.json
(avec variableFR_LM_CONFPATH='/home/nodejs/'
,FR_LM_PLATFORM='BCIT'
etFR_LM_ENV='production'
)