.env パーサー & 必須変数チェック

.env の内容と、任意で必須変数名の一覧を貼り付けてください。機密情報らしき値は表では既定で伏せ字になりますが、コピーした JSON には元の値が入ります。

ブラウザ内でローカルに実行
.env の内容
必須の変数

任意: 変数名を1行に1つ。不足している名前はエラーとして報告されます。

機密情報らしきキーは既定でマスクされます。解析はすべてブラウザ内で行われます。

解析した変数
.env ファイルを解析して変数と検証結果を確認します。
検証結果
  • 検証結果は解析後に表示されます。

.env ファイルを解析して検証する手順

このページは .env の内容を 1 行ずつ読み取り、見つかった変数を一覧にし、不正な名前、キーの重複、必須変数の不足、機密情報らしきキーを報告します。ファイルを貼り付け、存在すべき変数名を入力して「解析して検証」を押してください。処理はすべてブラウザ内で完結します。テストでは解析時にネットワーク要求が 1 件も発生しなかったため、外部に出せないファイルでもここで確認できます。

結果はキー・値・行・分類の表、カウンター行、検証結果のリストです。名前が機密情報らしい値は「解析結果の表に値を表示する」をオンにするまで •••••••• のままですが、「JSON をコピー」はファイル内の値をそのまま書き出します。コピーした内容は機密情報として扱ってください。

  1. 左の欄に .env の内容を貼り付けます。空行と # で始まる行は読み飛ばされ、先頭の export は取り除かれます。
  2. 必要なら「必須の変数」欄に、存在しなければならない変数名を 1 行に 1 つずつ入力します。ファイルに現れない名前はエラーとして報告されます。
  3. 「解析して検証」を押します。表には取り込まれた代入が行番号付きで並び、上のカウンターが変数・エラー・警告・機密キーを集計します。
  4. 検証結果を読みます。エラーはその行を取り込まなかったこと、警告は解析を続けたこと(重複キーは最後の値、機密名は伏せ字)、情報は値が空であることを示します。
  5. 「JSON をコピー」で解析済み変数のキーと値のオブジェクトを取り出し、「クリア」で入力欄を空にします。表が伏せ字のままでも JSON には元の値が入ります。

1 行の読み取り方と、このツールが行わないこと

1 行が変数になるまで

空行と、空白を除いた先頭が # の行は読み飛ばし、先頭の export は取り除くので export API_URL=... と API_URL=... は同じ扱いになります。キーは最初の = より前を前後の空白なしで取ったもので、先頭は英字かアンダースコア、続きは英数字かアンダースコアでなければなりません。_PRIVATE は有効で、9LIVES や A-B は不正な名前として報告されます。値は残りの部分です。引用符付きの値は内容をそのまま保ち、二重引用符では \n、\r、\t、\"、\\ を解釈し、単一引用符では \' と \\ だけを扱います。引用符なしの値は末尾の「 # コメント」を落として前後の空白を除きます。前に空白がない # は値の一部のまま残るので A=a#b は a#b になり、参照は展開されません。A=$HOME は $HOME のままです。

同じキーが 2 回現れると両方の行が一覧に並び、JSON に入るのは最後の値です(警告にもそう書かれます)。キーは大文字と小文字を区別するため、A と a は別の変数です。Windows の改行や余分な空白も LF のファイルと同じように読み取り、行番号は読み飛ばした行も含めた物理行を数えます。

伏せ字になる値とならない値

判定は値ではなく名前で行います。password、passwd、pwd、passphrase、secret、token、api_key、access_key、ssh_key、signing_key、encryption_key、private、credential、dsn、webhook を含む名前と、auth で始まる名前または _auth を含む名前を機密として扱います。テストでは PWD、MYSQL_PWD、ACCESS_KEY、AWS_ACCESS_KEY_ID、SSH_KEY、SENTRY_DSN、SLACK_WEBHOOK_URL、ENCRYPTION_KEY、SIGNING_KEY が伏せ字になり、AUTHOR と AUTHORITY は auth の文字が並ぶだけなので表示されたままでした。

名前による判定なので、それらしくない名前の機密は漏れます。テストでは DATABASE_URL、MONGODB_URI、REDIS_URL、STRIPE_SK は伏せ字になりませんでしたが、接続文字列には通常パスワードが含まれます。「値を表示する」で表に出すなどして確認し、コピーした JSON にはいずれにせよ元の値が入る点に注意してください。

このツールが行わないこと

プロセスの環境変数やディスク上のファイルは読まず、ネットワークにも接続せず、値が有効か・最新か・到達可能かは確認せず、何も書き戻しません。必須の名前は文字列として比較するため、A.B のようにキーになり得ない名前は単に「ありません」と報告されます。

解析上の制限も 2 つあります。閉じていない引用符はエラーにせずそのまま保持し、末尾のバックスラッシュは行を継続しません。サイズは実用上問題になりません。テストでは 2,000 個の変数を約 0.3 秒、20 万文字の単一の値を約 0.2 秒で解析しました。

最近使ったツール: