proenv is a dependency free package like dotenv
but with extra features.
# installing with npm
npm install proenv --save
# installing with yarn
yarn add proenv
Create a .env
file in the root of your project.
PORT=3000
Import and configure proenv in your application:
const { config } = require("proenv");
config();
console.log(process.env);
Using ES6:
import { config } from "proenv";
config();
console.log(process.env);
That's it. process.env
now has the keys and values you defined in your .env
file:
All key-value pairs defined in your .env
should be available in your process.env
- Declaring Private key-value pairs
- Key-value pairs reuse
- Declaring values as objects
- Object spreading with the
...
syntax - Comments
- Multiline Values
Unlike the normal key-value pairs, private key-value pairs prefixed with the >
syntax can only be declared at the top of the .env
file and will not be loaded into process.env
.
>PRIVATE_KEY=PRIVATE_VALUE
SOME_KEY=SOME_VALUE
Key-value pairs can also be reused as values if prefixed with the $
syntax.
SOME_KEY=VALUE
ANOTHER_KEY=$SOME_KEY
Values can be declared as objects and will be loaded as objects into process.env
.
DB=[
USERNAME=root
PASSWORD=
HOST=localhost
PORT=3306
]
Alternatively,
DB=[
CURRENCIES=[
NAIRA=[
CODE=NGN
]
]
]
can be written as:
DB.CURRENCIES.NAIRA.CODE=NGN
const { config } = require("proenv");
config(undefined);
console.log(process.env); // { DB: { USERNAME: "root", PASSWORD: undefined, HOST: "localhost", PORT: "3306" }}
If the value is declared as an object, it can also be spread into another object with the spread syntax ...
DB=[
USERNAME=root
PASSWORD=
HOST=localhost
PORT=3306
]
DB_DEV=[
...$DB
LOG=true
]
Comments can be added to your file either on separate lines or inline:
# Seperate Comment
SOME_KEY=SOME_VALUE # Inline comment
Values can also be multiline using single or double quotes.
SINGLE_QUOTES_MULTILINE='Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'
DOUBLE_QUOTES_MULTILINE="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
The config
function accepts will read your .env
file if a path to the env file(s) is not specified, parse the contents, assign it to
process.env
else an error will be returned.
const error = config();
if (error) {
throw new Error(error);
}
config()
takes two arguments:
config()
by default uses the .env
file in the root of your application.
Custom paths can be specified if your files containing environment varibales resides elsewhere in your application.
const { config } = require("proenv");
config([".env", ".env.development", "/app/elsewhere/.env"]);
They will be parsed in order and combined with process.env
.