このツールの動作
平たい JSON オブジェクトが、一行に一つの代入を持つ .env ファイルになります。
{ "PORT": 3000, "NAME": "my app", "DEBUG": true }
PORT=3000
NAME="my app"
DEBUG=true
値は文字のまま残ります。数値も真偽値も、同じ文字からなる文字列も、同じように出ます。.env ファイルは文字しか持てないからです。
読み手が拒む名前は、今は変換を止める
変数名は何かを書き出す前に検査されます。英字、数字、_、. のみ、先頭に数字は来ません。my key や 2fa は拒まれ、問題の鍵が示されます。
これは率直に述べるに値します。この道具が抱えていた欠陥だからです。以前はどんな鍵も受け取ってそのまま書いたので、{"my key": "1"} は次を出していました。
my key=1
この行は、同じ場所にある .env の読み手が拒む行であり、シェルも代入とは見なさない行です。自分の逆変換に拒まれる出力を出す変換器は、欠陥のある変換器です。この文章を書く過程で見つけ、直しました。
引用符は必要なところにだけ
裸のままだと値の終わりが変わってしまうとき、値は引用符で囲まれます。空白、注釈を始めてしまう #、引用符、逆斜線を含むときです。
{ "GREETING": "hello world", "NOTE": "a # b" }
GREETING="hello world"
NOTE="a # b"
引用符の中では、本物の改行は \n と書かれます。変数は一行のものであり、値の途中の改行はそこで代入を終わらせてしまうからです。
.env ファイルが持てないもの
入れ子はそこに居場所がありません。{"db": {"host": "x"}} は db を示して拒まれます。DB_HOST や db.host へ作り変えたりはしません。そのどちらをあなたの応用が待っているかは、JSON のどこにも書かれていないからです。
そして null は空の値 KEY= になり、空文字列として読み戻されます。その区別はこの形式にそもそも無いものです。頼りにする前に知っておいてください。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。