@henrycunh/ev
v1.0.0
Published
<div align="center">
Readme
ev
a tool for versioning, securing and easily sharing environment variables
Features
- ⏱ Version control - allows for storing environment variables securely in git
- 🔑 Secure - uses a single secret to secure your variables
- 🧑💻 Easy sharing - sharing the secret means sharing your variables
- 🛠 Great DX - tools for easily managing variables
Getting started
Initializing
Install Node >= 14 and run:
npx evIt will prompt you for a new secret key and create two new files:
.ev/vars- where your environment variables are encrypted and safely stored,.ev/secret- your secret key, whose must not be version controlled
And add .ev/secret to .gitignore
You can install ev globally (so you wont have to prepend npx) by running,
npm install -g @henrycunh/evCommands
ev MY_KEY=VALUE OTHER_KEY=OTHER_VALUEThis will add the MY_KEY and OTHER_KEY variables, if the variables already exists, their value will be overrided
ev | source
# you can alternatively use
eval $(ev)This will export every variable into the environment
You can test it by running
ev TEST=123 && ev | source && echo $TESTThis should print Added 1 variables. followed by 123.
ev rm MY_KEY OTHER_KEYThis will remove the MY_KEY and OTHER_KEY variables
ev lsThis will list all variables
ev ls MY_KEYThis will list the MY_KEY variable
ev change-secretThis will prompt for the old key and the new one, if the old key is correct, it will re-encrypt the variables with the new one
In case you mistype your secret, you can just run this to type the secret again
ev set-secretThis will prompt for the secret
You can append the option --env (or -e) on any command to specify a different environment
ev -e staging MY_KEY=VALUE_IN_STAGINGThe variables for each environment is stored in a different file
ev load .envAll the variables on .env will be loaded into the default environment
ev change-secret -e productionChanges the default secret on the production environment
Using in your project
After initializing and setting a secret, you can just load from your previous .env file with the command ev load .env and run either ev | source or eval $(ev) to export the variables into the environment.
Passing a secret through a environment variable
In a CI environment, you want your secret to be passed through an environment variable set by your CI system. You can do this by setting the EV_SECRET variable
EV_SECRET=my-secret eval $(npx ev)Javascript projects
You can add a pre script to your package.json file to load the variables into the environment before your development script runs. Here's an example:
{
"scripts": {
"predev": "eval $(ev)",
"dev": "..."
}
}You can even create different scripts for different environments
{
"scripts": {
"predev:staging": "eval $(ev -e staging)",
"dev:staging": "..."
}
}