Introduction to direnv
direnv is a powerful extension for your shell that manages your environment variables. It is an essential tool for developers who need to manage multiple projects with different configurations. This guide covers dozens of useful direnv APIs and provides an application example to help you get started.
Getting Started with direnv
To install direnv, you can use the following command:
brew install direnv
Basic Usage
Add the following line to your shell configuration file (.bashrc, .zshrc, etc.) to enable direnv:
eval "$(direnv hook bash)"
Creating a .envrc File
The .envrc file is where you define the environment variables for a project. Here is an example:
export NODE_ENV=development export DATABASE_URL=postgres://localhost/mydb
Loading .envrc Automatically
To allow direnv to automatically load the .envrc file, run:
direnv allow
Common API Methods
Here are several useful API methods provided by direnv:
use_node
Set up Node.js version automatically:
use node 14
use_python
Set up Python version automatically:
use python 3.8
layout_go
Set up Go environment automatically:
layout go
path_add
Add a directory to your PATH:
path_add bin
dotenv
Load environment variables from a .env file:
dotenv
Custom Environment Variables
You can define your own functions in the .envrc file:
layout_project() { export PROJECT_DIR=$(pwd) path_add $PROJECT_DIR/bin } layout_project
Application Example
Here is an example of a simple Node.js application configured with direnv:
Project Structure
my-node-app/ ├── .envrc ├── .env ├── bin/ ├── node_modules/ ├── package.json └── app.js
.envrc File
use node 14 dotenv export API_KEY=abcdef123456
.env File
DATABASE_URL=postgres://localhost/mydb
app.js File
const dotenv = require('dotenv'); dotenv.config(); const apiKey = process.env.API_KEY; const dbUrl = process.env.DATABASE_URL; console.log('API Key:', apiKey); console.log('Database URL:', dbUrl);
Run your application:
node app.js
With this configuration, direnv will automatically set up your environment variables, making it easier to manage your development workflow.
Hash: 76942d7466dd53e1dcad6b9f155a9cda77cc52bf27fd07c0fe1956a85f737a77