modenv
is a tool to update and keep consistent multiple .env
files.
It is designed with these objectives in mind:
modenv
greatly prioritizes a minimal, intuitive user-interface, helpful error messages
and command suggestions to make it easy to use for beginners and experts.modenv
is written in Rust, compiled natively, and therefore extremely fast.modenv
offers dry-runs and does not perform destructive operations without explicit confirmation.modenv
uses reasonable error codes, so it can be used effectively in a CI/CD pipeline or build scripts.It's easiest to understand the usage of modenv
by following the lifecycle of a typical project.
modenv init
This command creates .env
, env.example
, and .env.production
files, and adds .env*
to your .gitignore
file
(still allowing .env.example
).
modenv -a PORT=3000 HOST=0.0.0.0
This command adds PORT=5000
and HOST=0.0.0.0
to the first default env file found, typically .env
.
The -a
flag causes it to add PORT
and HOST
with blank values to all other env files found.
If the key already exists, this operation will fail unless -f
is also passed.
The default env file is the first found of .env.local
, .env.development
, and .env
.
Next, add values to .env.production
(specified by -p
):
modenv -p PORT=5000 HOST=0.0.0.0
modenv check
This subcommand checks for missing values from your env files. Using a reference file (chosen implicitly, as described above, or
explicitly with a command flag), check
reports on missing keys.
This command returns non-zero if there are missing keys, so it can be used as part of a CI/CD pipeline.
If you want to update files with blank values for missing keys:
modenv check -f
This command additionally will replicate comments and ordering from the reference file to the other files.
cargo install modenv
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)