Package Exports
- @dotenvx/dotenvx
- @dotenvx/dotenvx/src/lib/main.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@dotenvx/dotenvx) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme

a better dotenv–from the creator of dotenv.
- run anywhere (cross-platform)
- multi-environment
- encrypted envs
Quickstart
brew install dotenvx/brew/dotenvx
Run Anywhere
$ echo "HELLO=World" > .env && echo "console.log('Hello ' + process.env.HELLO)" > index.js
$ node index.js
Hello undefined
$ dotenv run -- node index.js
Hello World
> :-DMore examples
Python 🐍
$ echo 'import os;print("Hello " + os.getenv("HELLO", ""))' > index.py $ dotenv run -- python3 index.py Hello World
PHP 🐘
$ echo '<?php echo "Hello {$_SERVER["HELLO"]}\n";' > index.php $ dotenv run -- php index.php Hello World
Ruby 💎
$ echo 'puts "Hello #{ENV["HELLO"]}"' > index.rb $ dotenv run -- ruby index.rb Hello World
Rust 🦀
$ echo 'fn main() {let hello = std::env::var("HELLO").unwrap_or("".to_string());println!("Hello {hello}");}' > src/main.rs $ dotenv run -- cargo run Hello World
Frameworks ▲
$ dotenv run -- next dev $ dotenv run -- npm start $ dotenv run -- bin/rails s $ dotenv run -- php artisan serveDocker 🐳
# run as a command-line tool docker run -it --rm -v $(pwd):/app dotenv/dotenv run -- node index.js
# include in a Dockerfile # example coming soon
CI/CDs 🐙
examples coming soon
Platforms
examples coming soon
npx
# alternatively use npx $ npx @dotenv/dotenv run -- node index.js $ npx @dotenv/dotenv run -- next dev $ npx @dotenv/dotenv run -- npm start
Git
# use as a git submodule $ git dotenv run -- node index.js $ git dotenv run -- next dev $ git dotenv run -- npm start
Multiple Environments
Pass the --env-file flag (shorthand -f) to run any environment from a .env.environment file.
$ dotenv run --env-file=.env.production -- node index.js
[dotenv][INFO] Injecting 12 production environment variables into your application processCombine multiple .env files if you like.
$ dotenv run --env-file=.env.local --env-file=.env -- node index.js
[dotenv][INFO] Injecting 12 local, 1 development environment variables into your application process
Encrypt Your Env Files
WIP
Usage
Guide
Begin by creating a simple 'hello world' program.
// index.js
console.log(`Hello ${process.env.HELLO}`)Run it.
$ node index.js
Hello undefinedRun it with dotenv.
$ dotenv run -- node index.js
[dotenv@x.x.x][WARN] ENOENT: no such file or directory, open '/../../.env'
Hello undefinedIt warns you when there is no .env file (pass the --quiet flag to suppress these warnings).
Create the .env file.
# env
JELLO="World"Run it again.
$ dotenv run -- node index.js
[dotenv@x.x.x][INFO] Injecting 0 environment variables into your application process
Hello undefinedHrm, still undefined. Pass the --debug flag to debug the issue. I'll give you a hint: 🍮
$ dotenv run --debug -- node index.js
[dotenv@x.x.x][VERBOSE] Loading env from /../../.env
[dotenv@x.x.x][DEBUG] Reading env from /../../.env
[dotenv@x.x.x][DEBUG] Parsing env from /../../.env
[dotenv@x.x.x][DEBUG] {"JELLO":"World"}
# Oops, HELLO not JELLO ^^Fix your .env file.
# .env
HELLO="World"One last time. Le tired.
$ dotenv run -- node index.js
[dotenv@x.x.x][INFO] Injecting 0 environment variables into your application process
Hello undefined
Install
Installing with brew is most straight forward:
brew install dotenvx/brew/dotenvxOther Ways to Install
- After
brew, installing globally usingnpmis easiest:
npm install @dotenvx/dotenvx --global- Or use with
npx:
npx @dotenvx/dotenvx help- dotenvx is a standalone binary, so (if you want) you can just download it directly:
# download it to `./dotenvx`
curl -Lo ./dotenvx --compressed -f --proto '=https' https://github.com/dotenvx/dotenvx/releases/latest/download/dotenvx-$(uname)-$(uname -m).tar.gz
# install it to `/usr/local/bin/dotenvx`
sudo install -m 755 dotenvx /usr/local/bin
# check it works
dotenvx --helpContributing
If you have questions or feedback:
- github.com/dotenvx/dotenvx - bugs and discussions
- @dotenvx 𝕏 (DMs are open)