.env- [patched] -
As developers, we often work on applications that require different configurations for various environments, such as development, testing, staging, and production. Managing these configurations can be a daunting task, especially when dealing with sensitive information like API keys, database credentials, and other secrets. This is where .env files come into play.
(or .env-dev ): Used for shared development servers where team members integrate code.
The humble .env- pattern transforms environment management from a source of runtime errors and security holes into a structured, predictable, and developer‑friendly practice. By adopting environment‑specific files, you gain:
Docker Compose natively supports multiple .env files via the --env-file flag or the env_file directive. As developers, we often work on applications that
The humble naming convention is more than a syntax choice – it’s a philosophy of separation, clarity, and safety. By adopting environment-specific files, you eliminate configuration drift, reduce production errors, and make onboarding new team members a breeze.
Many popular frameworks and libraries support .env files out of the box. Here are a few examples:
NODE_ENV=test npm test # loads .env.test The humble naming convention is more than a
💡 The .env- pattern is about more than just organization; it’s about creating a secure, scalable, and professional development workflow.
In production, you need:
const DATABASE_URL, LOG_LEVEL, PORT = process.env; $dotenv = Dotenv::createImmutable(
Use .env files for local development and CI testing. For production, migrate to platform-native environment variables or a secrets management service.
$env = $_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? 'development'; $dotenv = Dotenv::createImmutable(, ".env-$env"); $dotenv->load();