환경 파일 파서
환경 파일(.env)은 구성을 키-값 쌍으로 저장하여 비밀 정보와 설정을 코드에서 분리합니다. 12-Factor 앱 방법론에 의해 대중화되었으며, Node.js, Python, Ruby 및 기타 생태계에서 사용됩니다. 이 도구는 .env 파일을 파싱하고 변수를 구조화된 뷰로 표시합니다.
사양
주요 사용 사례
- 애플리케이션 환경 구성 검사
- 배포 전 .env 파일 구문 검증
- 환경 간 환경 파일 비교 (dev, staging, prod)
- 문서화를 위해 환경 변수를 JSON으로 변환
- 로그에 노출하지 않고 구성 검토
기능
- 다양한 형식의 KEY=value 쌍 파싱
- 인용된 값 처리 (작은따옴표 및 큰따옴표)
- 주석(#) 및 빈 줄 건너뛰기
- 비밀 표시/숨기기 토글 (password, token, api, secret 등과 일치하는 키 마스킹)
- 프로그래밍 사용을 위해 JSON 및 YAML로 변환
- 주석 수 표시
예제
애플리케이션 구성
사용해 보기 →데이터베이스 및 API 설정이 포함된 일반적인 .env 파일.
# Database configuration
DATABASE_URL=postgres://localhost:5432/myapp
DATABASE_POOL_SIZE=10
# API Keys
API_KEY="sk-1234567890"
SECRET_KEY='super-secret-value'팁
- .env 파일을 버전 관리에 커밋하지 마세요. 대신 .env.example을 사용하세요.
- 인용된 값은 선행/후행 공백을 보존합니다.
- 일부 구현은 변수 확장을 지원합니다: ${VAR}.
- 환경별로 별도의 .env 파일을 사용하세요: .env.development, .env.production.
이해하기 환경 파일 파서
환경 변수 파일(.env)은 애플리케이션 구성을 줄당 하나의 단순한 KEY=VALUE 쌍으로 저장합니다. 이 형식은 코드에서 구성의 엄격한 분리를 주장하는 12-Factor 앱 방법론에 의해 대중화되었습니다. 데이터베이스 URL, API 키, 기능 플래그를 하드코딩하는 대신, 애플리케이션이 환경 변수에서 읽으며, .env 파일은 개발 중에 해당 변수를 설정하는 편리한 방법을 제공합니다.
Ruby용으로 원래 만들어지고 이후 Node.js, Python, PHP 및 사실상 모든 생태계에 포팅된 dotenv 라이브러리는 .env 파일을 읽고 프로세스 환경에 값을 주입합니다. 형식은 인용 없는 값(DATABASE_HOST=localhost), 이스케이프 시퀀스가 있는 큰따옴표 값(MESSAGE="Hello\\nWorld"), 리터럴로 처리되는 작은따옴표 값(REGEX='^\\d+$')을 지원합니다. 주석은 #으로 시작하고 빈 줄은 무시됩니다.
중요한 관행은 .env 파일을 버전 관리에 절대 커밋하지 않는 것입니다. 일반적으로 비밀 정보를 포함하기 때문입니다. 대신 프로젝트에 자리표시 값이 있는 모든 필수 변수를 나열하는 .env.example을 포함합니다. CI/CD 시스템과 호스팅 플랫폼은 환경 변수를 안전하게 설정하기 위한 자체 메커니즘을 제공합니다.
변수 확장(\${VAR} 구문으로 다른 변수 참조)은 일부 dotenv 구현에서 지원됩니다. Docker Compose는 기본적으로 이를 지원합니다. 확장에 의존할 때는 특정 dotenv 구현이 이를 지원하는지 확인하세요. 언어마다 동작이 다릅니다.
.env 파일은 일반적으로 데이터베이스 비밀번호, API 키, 암호화 키 같은 비밀 정보를 포함합니다. 이를 git에 커밋하면 저장소 접근 권한이 있는 모든 사람에게 노출되며, 삭제 후에도 git 히스토리에 남습니다. .env를 .gitignore에 추가하고 자리표시 값이 있는 .env.example로 필수 변수를 문서화하세요. 큰따옴표 값은 이스케이프 시퀀스를 해석합니다(\\n이 줄바꿈이 됨). 작은따옴표 값은 이스케이프 처리 없이 원시 리터럴로 처리됩니다. 인용 없는 값은 후행 공백이 제거되고 인라인 주석으로 처리되는 첫 번째 # 문자에서 멈춥니다.
여러 환경 관리는 일반적으로 별도의 .env 파일을 사용합니다: .env는 기본값, .env.local은 머신별 재정의(커밋하지 않음), .env.development 또는 .env.production은 환경별 값입니다. Next.js, Vite, Create React App 같은 프레임워크는 특정 우선순위 순서로 이를 로드합니다. Docker의 경우 Compose는 파일에서 변수를 로드하는 env_file과 직접 설정하는 environment 키를 지원합니다. 프로젝트 루트의 Compose .env 파일은 docker-compose.yml 자체에서의 변수 치환에 사용됩니다. 빌드 시 ARG 변수는 런타임 ENV 변수와 다르며 비밀 정보를 포함해서는 안 됩니다.