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.
Lastly, you can update the env for your deployment service. We assume PUT and a JSON body of env key/value pairs.
modenv -p push <url>
This command requires the push
feature flag.
cargo install modenv
If you'd like to send your environment as JSON key/value pairs, use:
cargo install modenv --features push
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
)