/dotenv-lint

A tool for identifying issues with .env files in nodejs projects

Primary LanguageJavaScriptMIT LicenseMIT

dotenv-lint

npm build NPM code style: prettier

⚠️This repository is no longer maintained⚠️

I originally built this project to solve a dev environment problem at work, but it ultimately never made it into our stack. When I released it, someone suggested turning this into a plugin for ESLint. The more I think about that, the more it makes sense and so, here we are. Hopefully, in the not so distant future, this will have been ported to an ESLint plugin for everyone to enjoy!

dotenv-lint is a tool for identifying issues with .env files in nodejs projects. It uses dotenv to read a master and one or more test .env files and compares them against each other according to a set of rules.

Installation

npm install --save-dev dotenv-lint

Usage

Imporant: By default, dotenv-lint runs in the current directory and uses .env.template as the*master and .env as the test.

dotenv-lint is primarily a CLI tool intended to be run via an NPM script:

{
    "scripts": {
        "start": "dotenv-lint && node ./app.js"
    }
}

It is a node binary which can also be invoked directly from the command line:

npx dotenv-lint [options] # using npx

dotenv-lint [options] # linked or installed globally

Options

  • path [p] - path to directory container .env files
  • master [m] - filename of master file
  • test [t] - filename(s) of test files
  • exit [e] - condition to exit with non-zero exit code (stops execution of npm script)
    • Options:
      • none - (default) always exit cleanly
      • error - exit(1) only if errors
      • warn - exit(1) if warnings

Examples

  • All default options

    dotenv-lint
    • In current directory, loads .env.template as the master and .env as the test
  • Specify path

    dotenv-lint --path ./my-package
    • In /my-package directory, loads .env.template as the master and .env as the test
    • Path supports relative and absolute paths
  • Specify master

    dotenv-lint --master .env.example
    • In current directory, loads .env.example as the master and .env as the test
  • Specify multiple tests

    dotenv-lint -p ./my-package -t .env.prod .env.dev
    • In the /my-package directory, loads .env.template as the master and .env.prod and .env.dev as tests
  • Stop NPM script on error

    dotenv-lint -e error