- ×
⚡️Lightning-fast linter for .env files. Written in Rust 🦀
Filed under development aids⚡️Lightning-fast linter for
.env
files. Written in Rust 🦀dotenv-linter
can check / fix / compare.env
files for problems that may cause the application to malfunction.Available checks:
✅ Duplicated key
✅ Ending blank line
✅ Extra blank line
✅ Incorrect delimiter
✅ Key without value
✅ Leading character
✅ Lowercase key
✅ Quote character
✅ Space character
✅ Substitution key
✅ Trailing whitespace
✅ Unordered key
✅ Value without quotes
What is a
.env
file?💡 A
.env
file ordotenv
file is a simple text file containing all the environment variables of a project.
Storing configuration in the environment variables is one of the tenets of the Manifesto of Twelve-Factor App.
The.env
file has a simple key-value format, for example:FOO=BAR
.
More information you can find in articles in English and Russian.The key features:
⚡️ Lightning-fast because it is written in Rust 🦀
💣 Can be used on any project regardless of the programming language 💥
🚀 Can be integrated with reviewdog and other CI services (including GitHub Actions and Super-Linter) 🔥Articles about dotenv-linter:
- [EN] Dotenv-linter: looking after the environment for you
- [EN] What's new in dotenv-linter v2.2.0?
- [EN] What are the key changes in dotenv-linter v3.0.0 release?
- [RU] Dotenv-linter: линтер .env файлов
- [RU] Что нового в dotenv-linter v2.2.1?
- [RU] Что нового в dotenv-linter v3.0.0?
👨💻 Installation
Pre-compiled binary
```shell script
Linux / macOS / Windows (MINGW and etc). Installs it into ./bin/ by default
$ curl -sSfL https://raw.githubusercontent.com/dotenv-linter/dotenv-linter/master/install.sh | sh -s
Or a shorter way
$ curl -sSfL https://git.io/JLbXn | sh -s
Specify installation directory and version
$ curl -sSfL https://git.io/JLbXn | sh -s -- -b usr/local/bin v2.0.0
Alpine Linux (using wget)
$ wget -q -O - https://git.io/JLbXn | sh -s
You can find other installation methods here: https://dotenv-linter.github.io/#/installation ## 🚀 Usage #### ✅ Check By default, `dotenv-linter` checks all `.env` files in the current directory: ```shell $ dotenv-linter Checking .env .env:2 DuplicatedKey: The FOO key is duplicated .env:3 UnorderedKey: The BAR key should go before the FOO key Checking .env.test .env.test:1 LeadingCharacter: Invalid leading character detected Found 3 problems
🛠 Fix
It can also fix the found warnings with the
fix
command:$ dotenv-linter fix Fixing .env Original file was backed up to: ".env_1601378896" .env:2 DuplicatedKey: The BAR key is duplicated .env:3 LowercaseKey: The foo key should be in uppercase All warnings are fixed. Total: 2
🤲 Compare
In addition,
dotenv-linter
can compare.env
files with each other and output the difference between them:$ dotenv-linter compare .env .env.example Comparing .env Comparing .env.example .env is missing keys: BAR .env.example is missing keys: FOO
Other use cases you can find on the documentation site (https://dotenv-linter.github.io):
🚦 Continuous Integration
dotenv-linter
can also be used with CI services such as: GitHub Actions and Circle CI.🚧 Benchmark
Benchmarking dotenv-linter/dotenv-linter and wemake-services/dotenv-linter has done using the hyperfine utility:
Command Mean [ms] Min [ms] Max [ms] Relative dotenv-linter/dotenv-linter .env
2.7 ± 0.4 2.0 4.3 1.00 wemake-services/dotenv-linter .env
162.6 ± 12.1 153.0 201.3 60.83 ± 10.20 Content of
.env
file used for benchmarkingdotenv SPACED= KEY = VALUE SECRET="my value" SECRET=Already defined kebab-case-name=1 snake_case_name=2
✌️ Mentorship
dotenv-linter
is not just a linter for.env
files — it is also a contributor-friendly open-source project with the purpose of helping others learn Rust using a simple, but useful tool. 😊In addition to studying Rust, this project has another goal — to promote love for open-source, help you with the first steps in it and give an opportunity to contribute to the open-source project written in Rust. ❤️
We act as a mentor within this project and help developers follow the path of a novice contributor from start to the top. 🤗
🤝 Contributing
If you've ever wanted to contribute to open source, now you have a great opportunity:
👍 Similar projects
- wemake-services/dotenv-linter (Python)
✨ Contributors
This project exists thanks to all the people who contribute. [Contribute].
♥️ Sponsors
dotenv-linter is created & supported by Evrone. What else we develop with Rust.
Become a financial contributor and help us sustain our community.
📃 License