업데이트로 돌아가기
New releaseSep 2, 2026

dotenv-diff [email protected]

코드베이스에서 환경 변수 사용 검증

공유

dotenv-diff

코드베이스를 스캔하여 모든 환경 변수 참조를 감지합니다. 런타임 오류가 발생하기 전에 누락되거나, 사용되지 않거나, 중복되거나, 잘못 사용된 변수를 조기에 발견하는 데 도움이 됩니다.

SvelteKit, Next.js, Nuxt를 일급으로 지원합니다. 또한 Node.js 및 Vue와 같은 최신 JavaScript/TypeScript 프로젝트와 프레임워크, 또는 안정적인 .env 파일 비교가 필요한 모든 환경에서 잘 작동합니다.

Coverage Status OpenSSF Scorecard OpenSSF Best Practices npm version npm downloads

awesome-cli-apps에 소개됨 - 멋진 CLI 애플리케이션의 선별된 목록


Demo


dotenv-diff를 사용하는 이유는?

  • 필수 환경 변수가 모두 정의되었는지 확인
  • 누락되거나 잘못 구성된 변수 발견
  • 팀이 필수 변수에 대해 일관성을 유지하여 협업 개선
  • 민감한 데이터 커밋 위험 감소
  • 모노레포 및 다중 환경 설정에 쉽게 확장

작동 방식

→ 스캐너가 확인하는 항목과 작동 방식에 대한 자세한 내용은 기능 문서를 참조하세요.


구성 (--init)

기본 구성 파일 생성:

dotenv-diff --init

→ 자세한 내용은 구성 문서를 참조하세요.


Git 훅 및 CI/CD 통합

dotenv-diff를 Git 훅 또는 CI/CD 파이프라인에 쉽게 통합하여 환경 변수 일관성을 강제할 수 있습니다.

→ 자세한 내용은 Git 훅 문서를 참조하세요.

프레임워크별 경고

SvelteKit, Next.js, Nuxt 프로젝트에서 dotenv-diff는 프레임워크별 환경 변수 오용을 감지합니다.

▸ Framework issues (SvelteKit)
──────────────────────────────────────────────────────────────────────
PUBLIC_API_URL              $env/dynamic/private
                            variables must not start
                            with "PUBLIC_"
                            src/routes/+page.server.ts:3
──────────────────────────────────────────────────────────────────────

→ 자세한 내용은 프레임워크 문서를 참조하세요.


좋은 .env.example 작성하기

팀의 새 기여자가 이해하기 쉽도록 작성된 .env.example:

# Node environment (development, production, etc.)
# @optional
NODE_ENV=development

# Public API URL is used to call our backend
PUBLIC_API_URL=http://localhost:3000

# Temporary token for the partner API sandbox — ask the integrations team for a new one
# @expire 2027-03-31
PARTNER_API_TOKEN=

→ 더 읽어보기: 좋은 .env.example 작성하기


드리프트 경고

스캔은 단일 파일과 코드를 비교합니다. 따라서 .env에 추가했지만 .env.example에 잊어버린 키는 새 기여자가 저장소를 클론할 때까지 보이지 않습니다. 드리프트 경고는 바로 이러한 문제를 감지합니다:

▸ Drift between .env and .env.example
──────────────────────────────────────────────────────────────────────
STRIPE_SECRET               not documented in .env.example
──────────────────────────────────────────────────────────────────────

기본적으로 활성화되어 있으며, --no-drift-warnings로 비활성화할 수 있습니다.

→ 자세한 내용은 드리프트 경고를 참조하세요.


만료 경고

환경 변수에 만료 메타데이터를 추가하여 만료가 임박했을 때 경고를 받을 수 있습니다. 예를 들어, .env 파일에 다음과 같이 작성합니다:

# @expire 2025-12-31
API_TOKEN=

→ 자세한 내용은 만료 문서를 참조하세요.


무시 주석

코드에 주석을 추가하여 특정 환경 변수 경고를 무시할 수 있습니다. 예를 들어:

const apiKey = process.env.API_KEY; // dotenv-diff-ignore

소스 코드에서 특정 경고가 안전하다는 것을 알고 있을 때 유용합니다.

→ 자세한 내용은 무시 주석 문서를 참조하세요.


기존 경고 억제 (--baseline)

이미 알려진 경고가 있는 프로젝트에 dotenv-diff를 도입할 때 현재 상태를 기준 파일(baseline file)에 기록합니다. 이후 실행에서는 새로 도입된 문제만 보고합니다:

dotenv-diff --baseline

→ 자세한 내용은 기준 문서를 참조하세요.


변수 설명 (--explain)

특정 환경 변수를 검사하여 정의된 위치, 코드베이스에서 사용된 위치, 전체 상태를 확인합니다:

dotenv-diff --explain DATABASE_URL

→ 자세한 내용은 --explain 문서를 참조하세요.


모노레포 지원

여러 앱과 패키지가 있는 모노레포에서 공유 폴더를 포함할 수 있습니다:

{
  "scripts": {
    "dotenv-diff": "dotenv-diff --example .env.example --include-files '../../packages/**/*' --ignore VITE_MODE"
  }
}

→ 자세한 내용은 모노레포 문서를 참조하세요.

이렇게 하면:

  • 현재 앱을 스캔
  • 공유 패키지 포함
  • 특정 환경에서만 사용되는 변수 무시

종료 코드

  • 0 → 오류 없음
  • 1 → 오류 발견 (또는 엄격 모드에서 경고)

문서

→ 전체 문서는 dotenv-diff 문서를 참조하세요


기여

이슈와 풀 리퀘스트를 환영합니다.
→ 자세한 내용은 CONTRIBUTING을 참조하세요.

이 프로젝트에 기여해 주신 훌륭한 분들께 감사드립니다:


라이선스

MIT 라이선스에 따라 라이선스가 부여됩니다.

chrilleweb이(가) 만들었습니다.

카테고리