Socket
Socket
Sign inDemoInstall

encrypted-env

Package Overview
Dependencies
53
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    encrypted-env

Encrypt and decrypt env config files quickly and easily


Version published
Weekly downloads
58
increased by81.25%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

encrypted-env

ci npm license

encrypted-env is designed to make encrypting and decrypting sensitive .env files a breeze. It's supports using different configuration files for different environments (e.g. development, staging, and production) with different encryption keys for each, and can detect which to load based on existing environmental variavbles.

Installation

npm install encrypted-env

Encrypting / Decrypting

This package provides two commands, env-encrypt and env-decrypt. To encrypt your .env file, run npx env-encrypt. If encrypting for the first time, the user will be prompted to enter in a 32-character key. The key is then stored for future encryption / decryption.

Multiple Environments

Create a .env-encrypted.config.json configuration file in the root of your project that maps environment names to the filename of the configuration file to use.

{
  "development": ".env.dev",
  "staging": ".env.staging",
  "production": ".env.prod"
}

Once defined, you can encrypt and decrypt configuration files for each environment by appending the environment name to the command:

npx env-encrypt staging

This may also be used in the scripts section of your package.json file:

{
  "name": "project-name",
  "scripts": {
    "encrypt:staging": "env-encrypt staging",
    "decrypt:staging": "env-decrypt staging"
  }
}

CI

To enable dynamic decryption in CI, set a secret in the repository and inject it into the process ENV for decryption.

For example, here's a GitHub Actions job that decrypts the env files for a project prior to running integration tests that require them:

  integration-test:
    runs-on: ubuntu-latest
    timeout-minutes: 5

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Setup Node
        uses: actions/setup-node@v2
        with:
          node-version: 14.x

      - name: Install dependencies
        run: npm install

      - name: Decrypt env
        run: npx env-decrypt
        env:
          ENV_KEY: ${{ secrets.ENV_KEY }}
          CI: true

      - name: Run integration tests
        run: npm run test:integration

Loading configuration in runtime

To load environmental variables into your project:

import loadENV from 'encrypted-env';

const env = loadENV();

If you have multiple environments defined, it will load the config file that corresponds to the environment set in the NODE_ENV or ENVIRONMENT variable.

For example, if the NODE_ENV process env is set to development and the .env-encrypted.config.json file looks like this:

{
  "development": ".env.dev",
  "staging": ".env.staging",
  "production": ".env.prod"
}

Then it will attempt to parse and load .env.dev. If it cannot find .env.dev, it will fail with an error prompting the user to run npx env-decrypt development- which will attempt to create .env.dev from .env.dev.encrypted.

Version Control

Make sure to add these lines to your .gitignore file:

**/*.env
**/*.key

This way, only the encrypted .env files will be pushed to version control.

License

MIT © Jesse Youngblood

FAQs

Last updated on 09 Mar 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc