ツール
入力
結果
結果はここに表示されます。.env ファイルは、値に #、引用符、改行が含まれるまでは間違えようがないほど単純に見えます。このツールは、ほとんどの Node プロジェクトが環境変数の読み込みに使っているパッケージ motdotla/dotenv のパーサーを 1 行ずつ移植したもので読み込むため、ここに表示される内容は process.env に入る内容と同じです。シークレットマネージャーやテストフィクスチャ用に JSON へ、docker run 用に -e フラグへ、Compose ファイルの environment: ブロックへ変換できます。逆方向に、JSON オブジェクトを、読み戻しても引用符の扱いが崩れない .env ファイルに変換することもできます。
動作のしくみ
- 引用符で囲まれていない # は、値の途中であってもコメントの開始になります。これは dotenv のルールで、URL が途中で切れる原因としてよくあるものです。
- シングルクォートとバッククォートの値はそのままの文字列として扱われ、\n を実際の改行に変えるのはダブルクォートだけです。
- export KEY=value と KEY: value の両方を受け付け、2 回定義されたキーは最後の値が残ります。どのキーが重複しているかは統計に表示されます。
- 空行でもコメントでも変数でもない行は行番号付きで一覧表示されるため、タイプミスが黙って消えることはありません。
- Docker フラグはシェル用に引用符で囲まれ、Compose の出力では、YAML が別のものとして読んでしまう値に引用符を付けます。そのため true、null、5432 は真偽値、null、数値にならず文字列のままです。
データの行き先
どこにも行きません。このツールは完全にブラウザ内で動作します。貼り付けたテキストはページが処理し、サーバーに送信されることも、ログに記録されることもありません。
このツールは無料で登録不要です。結果は開いているページの中にだけあり、どこにも保存されません。
必要なポイント
このツールは無料です。ログインもポイントも必要ありません。
よくある質問
- URL が # のところで切れてしまったのはなぜですか?
- dotenv は、引用符なしの値のどこに現れても # をコメントの開始として扱うため、URL=https://example.com/#section はスラッシュで終わってしまいます。URL="https://example.com/#section" のように値を引用符で囲めば # は保持されます。
- 秘密鍵のような複数行の値はどう保存すればよいですか?
- ダブルクォートで囲んで 1 行に \n エスケープを使うか、ダブルクォートで複数の実際の行にまたがって書くか、どちらでも dotenv は読み込めます。JSON から .env への変換では 1 行のエスケープ形式で書き出します。CI のシークレット設定に貼り付けても崩れないのはこちらの形式だからです。改行とダブルクォートの両方を含む値だけは、dotenv がほかの方法では読み戻せないため、バッククォートで囲んで複数行で書き出します。
- ${VARIABLE} のような参照は展開されますか?
- いいえ。dotenv 単体でも展開しません。展開は別パッケージ dotenv-expand の役割で、Docker Compose は独自の補間ルールを適用します。ここに表示される値は dotenv の parse が返すものとまったく同じで、参照もそのままの文字列として含まれます。
- 本番環境のシークレットをここに貼り付けても大丈夫ですか?
- 何もページの外には出ず、変換中にリクエストは一切発生しません。ただ、本番の認証情報が詰まった .env は、どこであれ扱う機会をできるだけ減らすべきものです。先に値をプレースホルダーに置き換えておくのは良い習慣で、構造は同じように変換されます。
背後にあるオープンソース
このツールは外部ライブラリを同梱しない独自実装です。motdotla/dotenv(BSD-2-Clause)はコードとして同じ仕事をします。自分のプログラムで同じことをしたいなら、Web ページを呼ぶのではなくそちらから始めてください。
motdotla/dotenv別の呼び方
- .env json 変換
- env json 変換
- json env 変換
- dotenv パーサー オンライン
- env ファイル docker 環境変数
- env docker compose 変換