.env の内容と、任意で必須変数名の一覧を貼り付けてください。機密情報らしき値は表では既定で伏せ字になりますが、コピーした JSON には元の値が入ります。
ブラウザ内でローカルに実行任意: 変数名を1行に1つ。不足している名前はエラーとして報告されます。
機密情報らしきキーは既定でマスクされます。解析はすべてブラウザ内で行われます。
このページは .env の内容を 1 行ずつ読み取り、見つかった変数を一覧にし、不正な名前、キーの重複、必須変数の不足、機密情報らしきキーを報告します。ファイルを貼り付け、存在すべき変数名を入力して「解析して検証」を押してください。処理はすべてブラウザ内で完結します。テストでは解析時にネットワーク要求が 1 件も発生しなかったため、外部に出せないファイルでもここで確認できます。
結果はキー・値・行・分類の表、カウンター行、検証結果のリストです。名前が機密情報らしい値は「解析結果の表に値を表示する」をオンにするまで •••••••• のままですが、「JSON をコピー」はファイル内の値をそのまま書き出します。コピーした内容は機密情報として扱ってください。
空行と、空白を除いた先頭が # の行は読み飛ばし、先頭の 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 秒で解析しました。