strict-env-conf
NPM package for easy work with ENV-based configuration
Usage
Just two examles...
The first idea: if something wrong with your environment variables - your application must crashes on startup, not in arbitrary time when running.
const sec = ; const tpl = scopes: DB: name: "PASSWORD" ; ;
Output:
...
Error: Required env variable DB_PASSWORD is not set
...
The second idea - parsing string values from environment variables to convenient JS-object with several types of properties.
const sec = ;const filters = ; const envVars = SEC_APP_HOST: 'example.com' SEC_APP_PORT: '80' SEC_DB_EXTERNAL_AUTH: 'true' SEC_DB_PORT: '444' SEC_LDAP_TEST_USER_EMAIL: 'null' SEC_LDAP_TEST_USER_ID: '4321'; for let varName in envVars processenvvarName = envVarsvarName; const template = prefix: 'SEC_' // env variables app-level prefix for safety // filters: [str => String(str).trim()] <-- this is by default. Set "filters: []" to avoid this behavior. scopes: APP: name: "HOST" default: "localhost" name: "PORT" default: 3000 // "filters: [Number]" is redundant here, Number is default filter if (typeof default === 'number') DB: name: "EXTERNAL_AUTH" default: false // default filter for boolean types works with "0", "1", "true", "false" name: "PORT" filters: Number // no default value here, just the Number filter - the variable is required name: "NAME" default: "my-app" LDAP: name: "TEST_USER_LOGIN" default: undefined // if default === undefined - you must check in your application code what conf object have this property name: "TEST_USER_EMAIL" default: undefined filters: filtersmaybeNull name: "TEST_USER_ID" default: undefined filters: Number DATA: name: "CATEGORIES" default: "2,1,E" filters: filterscsv2array // you also can use your own filters. Filter function example: stringValue => 'MY_' + stringValue ; const testConf = ;console;
Output:
Installation
npm i strict-env-conf
License
MIT