dotenv-linter
dotenv-linter is a lightning-fast linter for .env files written in Rust. It can check, fix, and compare environment files for problems that may cause applications to malfunction in production environments.
Key Features:
- 13 different checks including duplicated keys, incorrect delimiters, unordered keys, and trailing whitespace
- Automatic fixing of many common issues with the
fixcommand - File comparison to identify missing keys between different
.envfiles - Extremely fast performance being written in Rust
- Language agnostic - works with any project regardless of programming language
- Skip specific checks using inline comments or configuration
- Multiple file support for batch processing
- Colored output for better readability
- Zero dependencies - single binary installation
dotenv-linter documentation
- Version in MegaLinter: 4.0.0
- Visit Official Web Site
- See How to configure dotenv-linter rules
- See How to disable dotenv-linter rules in files
- See Index of problems detected by dotenv-linter
Configuration in MegaLinter
- Enable dotenv-linter by adding
ENV_DOTENV_LINTERin ENABLE_LINTERS variable - Disable dotenv-linter by adding
ENV_DOTENV_LINTERin DISABLE_LINTERS variable
- Enable autofixes by adding
ENV_DOTENV_LINTERin APPLY_FIXES variable
| Variable | Description | Default value |
|---|---|---|
| ENV_DOTENV_LINTER_ARGUMENTS | User custom arguments to add in linter CLI call Ex: -s --foo "bar" |
|
| ENV_DOTENV_LINTER_COMMAND_REMOVE_ARGUMENTS | User custom arguments to remove from command line before calling the linter Ex: -s --foo "bar" |
|
| ENV_DOTENV_LINTER_FILTER_REGEX_INCLUDE | Custom regex including filter Ex: (src\|lib) |
Include every file |
| ENV_DOTENV_LINTER_FILTER_REGEX_EXCLUDE | Custom regex excluding filter Ex: (test\|examples) |
Exclude no file |
| ENV_DOTENV_LINTER_CLI_LINT_MODE | Override default CLI lint mode - file: Calls the linter for each file- project: Call the linter from the root of the project |
file |
| ENV_DOTENV_LINTER_FILE_EXTENSIONS | Allowed file extensions. "*" matches any extension, "" matches empty extension. Empty list excludes all filesEx: [".py", ""] |
[".env"] |
| ENV_DOTENV_LINTER_FILE_NAMES_REGEX | File name regex filters. Regular expression list for filtering files by their base names using regex full match. Empty list includes all files Ex: ["Dockerfile(-.+)?", "Jenkinsfile"] |
Include every file |
| ENV_DOTENV_LINTER_PRE_COMMANDS | List of bash commands to run before the linter | None |
| ENV_DOTENV_LINTER_POST_COMMANDS | List of bash commands to run after the linter | None |
| ENV_DOTENV_LINTER_UNSECURED_ENV_VARIABLES | List of env variables explicitly not filtered before calling ENV_DOTENV_LINTER and its pre/post commands | None |
| ENV_DOTENV_LINTER_DISABLE_ERRORS | Run linter but consider errors as warnings | false |
| ENV_DOTENV_LINTER_DISABLE_ERRORS_IF_LESS_THAN | Maximum number of errors allowed | 0 |
| ENV_DOTENV_LINTER_CLI_EXECUTABLE | Override CLI executable | ['dotenv-linter'] |
MegaLinter Flavors
This linter is available in the following flavors
| Flavor | Description | Embedded linters | Info | |
|---|---|---|---|---|
![]() |
all | Default MegaLinter Flavor | 127 | |
| c_cpp | Optimized for pure C/C++ projects | 56 | ||
| ci_light | Optimized for CI items (Dockerfile, Jenkinsfile, JSON/YAML schemas,XML | 22 | ||
| cupcake | MegaLinter for the most commonly used languages | 88 | ||
| documentation | MegaLinter for documentation projects | 49 | ||
| dotnet | Optimized for C, C++, C# or VB based projects | 64 | ||
| dotnetweb | Optimized for C, C++, C# or VB based projects with JS/TS | 73 | ||
| go | Optimized for GO based projects | 51 | ||
| java | Optimized for JAVA based projects | 54 | ||
| javascript | Optimized for JAVASCRIPT or TYPESCRIPT based projects | 59 | ||
| php | Optimized for PHP based projects | 54 | ||
| python | Optimized for PYTHON based projects | 65 | ||
| ruby | Optimized for RUBY based projects | 50 | ||
| rust | Optimized for RUST based projects | 50 | ||
| salesforce | Optimized for Salesforce based projects | 53 | ||
| swift | Optimized for SWIFT based projects | 50 | ||
| terraform | Optimized for TERRAFORM based projects | 54 |
Behind the scenes
How are identified applicable files
- File extensions:
.env
How the linting is performed
- dotenv-linter is called one time by identified file (
fileCLI lint mode)
Example calls
dotenv-linter myfile.env
dotenv-linter fix myfile.env
Help content
dotenv-linter 4.0.0
Mikhail Grachev <work@mgrachev.com>, dotenv-linter core team & contributors
Lightning-fast linter for .env files
Usage: dotenv-linter [OPTIONS] <COMMAND>
Commands:
check Check .env files for errors such as duplicate keys or invalid syntax
fix Automatically fix issues in .env files
diff Compare .env files to ensure matching key sets
help Print this message or the help of the given subcommand(s)
Options:
--plain Switch to plain text output without colors
-q, --quiet Display only critical results, suppressing extra details
-h, --help Print help
-V, --version Print version
Installation on mega-linter Docker image
- Dockerfile commands :
# renovate: datasource=github-tags depName=dotenv-linter/dotenv-linter
ARG DOTENV_LINTER_VERSION=4.0.0
RUN wget -q -O - https://raw.githubusercontent.com/dotenv-linter/dotenv-linter/master/install.sh | sh -s -- -b /usr/local/bin "v${DOTENV_LINTER_VERSION}"
