What is dotenv?
Dotenv is a zero-dependency module that loads environment variables from a .env file into process.env. It is a simple yet powerful tool for managing application configuration, especially for sensitive information like API keys, database credentials, and other environment-specific settings, keeping them separate from your codebase.
What is Dotenv?
In Node.js applications, it's common practice to use environment variables for configuration. These variables can change between different deployment environments (development, staging, production) and often contain sensitive data that should not be committed to source control. Dotenv addresses this by providing an easy way to define these variables in a local .env file.
When your application starts, Dotenv reads the key-value pairs from your .env file and automatically attaches them to Node.js's process.env object. This allows your application to access these configurations just like any other system environment variable, promoting better security and maintainability.
Why Use Dotenv?
- Security: Prevents sensitive data (API keys, database passwords) from being hardcoded or committed to version control.
- Configuration Management: Easily manage different configurations for various environments (development, test, production) without changing the core codebase.
- Simplicity: Provides a straightforward and intuitive way to set up and access environment variables.
- Portability: Makes your application more portable across different machines and deployment environments.
How to Use Dotenv
1. Installation
First, install dotenv as a dependency in your Node.js project:
npm install dotenv
2. Create a .env file
In the root directory of your project (where your package.json resides), create a file named .env and add your environment variables in a KEY=VALUE format. No quotes are needed around values unless they contain spaces or special characters.
DB_HOST=localhost
DB_USER=root
DB_PASS=mysecretpassword
API_KEY=your_api_key_here
PORT=3000
3. Load Dotenv in your application
At the very top of your application's entry file (e.g., app.js or index.js), import and configure dotenv. It's crucial to do this as early as possible so that the variables are available throughout your application.
require('dotenv').config();
const express = require('express');
const app = express();
// Your application logic
4. Access Environment Variables
You can now access these variables anywhere in your application using process.env:
require('dotenv').config();
const port = process.env.PORT || 8080;
const dbHost = process.env.DB_HOST;
const apiKey = process.env.API_KEY;
console.log(`Application running on port: ${port}`);
console.log(`Database host: ${dbHost}`);
console.log(`API Key: ${apiKey}`);
// ... rest of your application
Best Practices
- Add
.envto.gitignore: Always ensure your.envfile is excluded from version control to prevent sensitive data from being committed to your repository. - Provide default values: When accessing environment variables, provide sensible default values using the
||operator (e.g.,process.env.PORT || 3000) for development environments or if a variable might occasionally be missing. - Use descriptive names: Choose clear and descriptive names for your environment variables.
- Never commit secrets: Reiterate that any secret keys, passwords, or credentials should never be directly committed to your code repository.