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.
npm install --save-dev dotenv-lint
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
- 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 cleanlyerror
- exit(1) only if errorswarn
- exit(1) if warnings
- Options:
-
All default options
dotenv-lint
- In current directory, loads
.env.template
as the master and.env
as the test
- In current directory, loads
-
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
- In
-
Specify master
dotenv-lint --master .env.example
- In current directory, loads
.env.example
as the master and.env
as the test
- In current directory, loads
-
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
- In the
-
Stop NPM script on error
dotenv-lint -e error