
dotenv-diff
コードベースをスキャンして、すべての環境変数参照を検出します。欠落、未使用、重複、誤用された変数を、ランタイムエラーを引き起こす前に早期に発見するのに役立ちます。
SvelteKit、Next.js、Nuxt をファーストクラスでサポートします。また、Node.js や Vue などの最新の JavaScript/TypeScript プロジェクトやフレームワーク、あるいは信頼性の高い .env ファイル比較を必要とするその他のセットアップでも問題なく動作します。
✨ awesome-cli-apps で紹介されました - 厳選された素晴らしい CLI アプリケーションのリスト

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 を採用するには、現在の状態をベースラインファイルに記録します。今後の実行では、新たに発生した問題のみが報告されます:
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 ドキュメント を参照してください
コントリビューション
Issue とプルリクエストを歓迎します。
→ 詳細については、CONTRIBUTING を参照してください。
このプロジェクトに貢献してくれた素晴らしい人々に感謝します:
ライセンス
MIT ライセンスの下でライセンスされています。
chrilleweb によって作成されました。