entor
v1.3.0
Published
Loads environment variables from JSON files into process.env and supports shared environments.
Readme
entor loads environment variables from a JSON file into process.env.
- 🚀 Easy JSON configuration
- ⚪️ Zero dependencies
- 💪 Flexibility
- 🎎 Shared environment between all your projects
- 🔨 Generates examples automatically
Table of contents
Example without any config
// entor.prod.json
{
"db_url": "prod://url",
"username": "prod"
}// index.js
require("entor")();🏃♂️ Run
node ./index.js --env=prod✅ Entor will load entor.prod.json into process.env.
// process.env
{
"db_url": "prod://url",
"user": "prod"
}❗ Note
Each value in process.env is converted to string by Node.
Config
const env = require("entor")({config});
// ↑ entor will always return env object- getEnv
function:- Function that receives as argument the object with process arguments (
--key=value→{key: value}) that must return a string containing theenv. - Default:
args => args.env.
- Function that receives as argument the object with process arguments (
- env
string: Defines the environment type. This will take precedence overgetEnv.
- path
string: Defines the path where will look for the fileentor.<env>.json. Default./.
- sharedEnvPath
string: Defines the file path where a.jsonwill be loaded.
- override
object: object that will be merged with the content ofentor.<env>.json.
- warningLevel
"none" | "message" | "throw":"none"will ignore all non-critical errors."message"will print all errors but will never throws."throw"will print all errors, throws on critical errors.
- addToProcessEnv
boolean: Defaulttrue. Iftrueadds theentor.<env>.jsoncontent to theprocess.envobject.
- syncExamples
boolean: Defaultfalse. Iftruesyncs theentor.<env>.jsonfile with theentorExample.<env>.jsonfile.
Override priority
overridewill override ↓envwill override ↓sharedEnvPath(This is the first file that will be loaded)
Examples
Custom arguments
// index.js
require("entor")({
getEnv: args => args.myCustomEnv,
});🏃♂️ Run
node ./index.js --myCustomEnv=localOverride
// entor.prod.json
{
"db_url": "prod://url",
"username": "prod"
}// index.js
require("entor")({
override: {
db_url: "override://url"
}
});🏃♂️ Run
node ./index.js --env=prod✅ Entor will load entor.prod.json into process.env and apply the override.
// process.env values:
{
db_url: "override://url",
username: "prod"
}Shared env
// entor.prod.json (located at the parent folder)
{
"db_url": "shared://url",
}// entor.prod.json (located at project folder)
{
"username": "prod"
}// index.js
require("entor")({
sharedEnvPath: "C:/parentFolder/",
});🏃♂️ Run
node ./index.js --env=prod✅ Entor will merge entor.prod.json (shared) with prod.entor.json (project) and write into process.env.
// process.env values:
{
db_url: "shared://url",
username: "prod"
}