Product
Socket Now Supports uv.lock Files
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
@dotenvx/dotenvx
Advanced tools
a better dotenv–from the creator of dotenv
.
brew install dotenvx/brew/dotenvx
$ echo "HELLO=World" > .env && echo "console.log('Hello ' + process.env.HELLO)" > index.js
$ node index.js
Hello undefined
$ dotenvx run -- node index.js
Hello World
> :-D
More examples
$ echo 'import os;print("Hello " + os.getenv("HELLO", ""))' > index.py
$ dotenvx run -- python3 index.py
Hello World
$ echo '<?php echo "Hello {$_SERVER["HELLO"]}\n";' > index.php
$ dotenvx run -- php index.php
Hello World
$ echo 'puts "Hello #{ENV["HELLO"]}"' > index.rb
$ dotenvx run -- ruby index.rb
Hello World
$ echo 'fn main() {let hello = std::env::var("HELLO").unwrap_or("".to_string());println!("Hello {hello}");}' > src/main.rs
$ dotenvx run -- cargo run
Hello World
$ dotenvx run -- next dev
$ dotenvx run -- npm start
$ dotenvx run -- bin/rails s
$ dotenvx run -- php artisan serve
$ docker run -it --rm -v $(pwd):/app dotenv/dotenvx run -- node index.js
Or in any image:
FROM node:latest
RUN echo "HELLO=World" > .env && echo "console.log('Hello ' + process.env.HELLO)" > index.js
RUN curl -sfS https://dotenvx.sh/! | bash
CMD ["dotenvx", "run", "--", "echo", "Hello $HELLO"]
examples coming soon
examples coming soon
# alternatively use npx
$ npx @dotenvx/dotenvx run -- node index.js
$ npx @dotenvx/dotenvx run -- next dev
$ npx @dotenvx/dotenvx run -- npm start
# use as a git submodule
$ git dotenvx run -- node index.js
$ git dotenvx run -- next dev
$ git dotenvx run -- npm start
Pass the --env-file
flag (shorthand -f
) to run any environment from a .env.environment
file.
$ dotenvx run --env-file=.env.production -- node index.js
[dotenvx][INFO] Injecting 12 production environment variables into your application process
Combine multiple .env
files if you like.
$ dotenvx run --env-file=.env.local --env-file=.env -- node index.js
[dotenvx][INFO] Injecting 12 local, 1 development environment variables into your application process
WIP
Begin by creating a simple 'hello world' program.
// index.js
console.log(`Hello ${process.env.HELLO}`)
Run it.
$ node index.js
Hello undefined
Run it with dotenvx
.
$ dotenvx run -- node index.js
[dotenvx@x.x.x][WARN] ENOENT: no such file or directory, open '/../../.env'
Hello undefined
It 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.
$ dotenvx run -- node index.js
[dotenvx@x.x.x][INFO] Injecting 0 environment variables into your application process
Hello undefined
Hrm, still undefined. Pass the --debug
flag to debug the issue. I'll give you a hint: 🍮
$ dotenvx run --debug -- node index.js
[dotenvx@x.x.x][VERBOSE] Loading env from /../../.env
[dotenvx@x.x.x][DEBUG] Reading env from /../../.env
[dotenvx@x.x.x][DEBUG] Parsing env from /../../.env
[dotenvx@x.x.x][DEBUG] {"JELLO":"World"}
# Oops, HELLO not JELLO ^^
Fix your .env
file.
# .env
HELLO="World"
One last time. Le tired.
$ dotenvx run -- node index.js
[dotenvx@x.x.x][INFO] Injecting 1 environment variable into your application process
Hello World
🎉 It worked!
Installing with brew
is most straight forward:
brew install dotenvx/brew/dotenvx
brew
, installing globally using npm
is easiest:npm install @dotenvx/dotenvx --global
npx
:npx @dotenvx/dotenvx help
package.json
npm i @dotenvx/dotenvx --save
// package.json
"scripts": {
"start": "./node_modules/.bin/dotenvx run -- nodex index.js"
}
curl -sfS https://dotenvx.sh/! | sh
Remove the !
to install where you prefer. (the !
downloads directly into /usr/local/bin/
)
# download it to `./dotenvx`
curl -sfS https://dotenvx.sh/ | sh
# check it works
./dotenvx help
# move it to `/usr/local/bin/dotenvx`
sudo install -m 755 dotenvx /usr/local/bin
# check it still works
/usr/local/bin/dotenvx help
# check it is in your path
which dotenv
dotenvx help
If you have questions or feedback:
FAQs
a better dotenv–from the creator of `dotenv`
The npm package @dotenvx/dotenvx receives a total of 78,158 weekly downloads. As such, @dotenvx/dotenvx popularity was classified as popular.
We found that @dotenvx/dotenvx demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.
Security News
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.