entor
v1.3.0
Published
Loads environment variables from JSON files into process.env and supports shared environments.
Downloads
44
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.json
will 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
. Iftrue
adds theentor.<env>.json
content to theprocess.env
object.
- syncExamples
boolean
: Defaultfalse
. Iftrue
syncs theentor.<env>.json
file with theentorExample.<env>.json
file.
Override priority
override
will override ↓env
will 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=local
Override
// 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"
}