I’m Never Using .env Files Ever Again


Hey friends!

Are you tired of juggling countless environment variables across different projects? Do you find yourself constantly tweaking your .zshrc or .bashrc with tokens, api keys or other project-specific variables? Well, I’ve got a game-changer for you!

The Problem with Traditional .env Files

We’ve all been there. You start a new project, set up a few environment variables in a .env file, and everything’s peachy. But as your project grows, so does your list of variables. Before you know it, you’re drowning in a sea of API keys, database credentials, and configuration settings.

The worst part? These variables are always loaded, even when you don’t need them.

It’s like carrying around a huge keychain when you only need one key. Not only that, sometimes they start conflicting with one another; a PG_USER or a AWS_ACCESS_KEY_ID of another environment will run over or get over-written, creating one big mess.

Enter direnv: Your Environment’s Best Friend

Direnv is like a smart badge for your code. It automatically loads and unloads environment variables based on your current directory. Here’s why it’s awesome:

  1. Path-based loading: Variables are only loaded when you’re in the right directory. Step out, and they’re gone!
  2. Security boost: No more accidental use of production credentials in your dev environment.
  3. Git-friendly: Works beautifully with Git worktrees, or allowing different configs for different branches.
  4. Built-in standard library: Use functions like dotenv to load traditional .env files effortlessly.
  5. Programmable environments: Set up warnings for missing required variables, ensuring your team has everything they need.

How to Get Started

  1. Install direnv (I used nix-env).
  2. Add eval "$(direnv hook zsh)" to your .zshrc (or equivalent for your shell).
  3. Create a .envrc file in your project directory.
  4. Run direnv allow to approve the .envrc file.

Pro Tip: Handling Secrets

For sensitive data, check out Dotenvx.
I wrote about it before, but in a nutshell, it allows for encryption of your .env files, and manages keys for you. It has its own pros and cons, and you can read all about it here

Wrapping Up

Direnv isn’t just a tool; it’s a new way of thinking about environment management. It’s secure, efficient, and plays well with modern development practices like 12-factor apps.

I made a video covering all about, catch it here.

Give direnv a try, and you’ll wonder how you ever lived without it!

Whenever you’re ready, here’s how I can help you:

ESPRESSO FRIDAYS

Every once in a while I send hand picked things I've learned. Kind of like your filter to the tech internet. No spam, I promise!

Read more from ESPRESSO FRIDAYS

Hi friends, Ever felt like your remote pair programming sessions were missing that seamless, in-person collaboration feel? You’re not alone. Many developers struggle to recreate the magic of side-by-side coding in a virtual environment. A recent study shows that pair programming has been proven to catch mistakes early, reduce defects, and lead to better designs. The same study found that teams who practice pair programming not only produce shorter, more efficient code but also solve problems...

Hi friends, Are you tired of juggling multiple apps for note-taking and writing? Many of us struggle to find a seamless system that combines powerful text editing with effective note organization. While popular note-taking apps offer fancy features, they often fall short for those who prefer a keyboard-centric, or should I say Vim-centric workflow. Most people resort to using dedicated note-taking applications like Obsidian, Notion, or even Apple notes. These tools are great for casual users,...

Hi friends, The Dotfiles Dilemma Ever felt like your computer settings are scattered everywhere? Those pesky dotfiles that control how your programs look and work can be a real headache to manage. The Old Way: Git and Stow Many of us have tried using Git to track changes in our dotfiles. Some even use Stow to create symlinks. But let's be honest – it's not always smooth sailing. Sometimes things don't line up right, and not every program plays nice with this setup. Why Traditional Methods...