cm-env
Node package to encrypt and decrypt environment files. Each environment uses a different encryption key to maintain security
The inputs and outputs are configurable with the defaults aligned to how .env
files are generated for Next.Js
cm-env
uses Node's in-built crypto API to handle the encryption/decryption. This allows running cm-env
to be used in any environment that can run Node and avoids OS-level issues as frequently happens with other approaches that use openssl
Installation
$ npm install --save cm-env
with yarn:
$ yarn add cm-env
Installing the package locally in the project is recommended to avoid version conflicts between different projects
Inside the package.json
add some custom scripts:
{
"scripts": {
"encrypt": "cm-env encrypt",
"decrypt": "cm-env decrypt",
"setup-encryption-keys": "cm-env setup",
"cm-env": "cm-env"
}
}
Usage
Here are some examples on how to use the scripts you added in the Installation
section
Create encryption keys
You'll need to create they encryption keys before you can start encrypting files
$ npm run setup-encryption-keys
This will create 3 different .key
files. Make sure to never commit these files
Encrypting the env file
- Create a file
.env.local
with the environment variables - Create the encrypted file by running
npm run encrypt -- [env name]
Replace [env name]
with the environment name, for example:
$ npm run encrypt -- staging
# or
$ npm run encrypt -- dev
# or
$ npm run encrypt -- prod
Custom environment names are supported
This will create a file under keys/[env name].enc
which is the encrypted version of .env.local
Decrypting the env file
Run this command to decrypt the .enc
file for a particular environment:
$ npm run decrypt -- [env name]
This will replace the .env.local
file with the contents of the file that was decrypted
Getting help
The package takes additional arguments which can be used to customize it's behavior to better fit your needs. Check out the help menu by using this command:
$ npm run cm-env -- help