このツールの動作
.env ファイルが平らな JSON のオブジェクトになります。
# サービス
export PORT=8080
NAME="Ada Lovelace"
EMPTY=
{
"PORT": "8080",
"NAME": "Ada Lovelace",
"EMPTY": ""
}
コメント行と空行は読み飛ばし、先頭の export は取り除き、値を囲む引用符も一緒に外します。二重引用符の中では \n と \t が改行とタブになり、一重引用符の中ではすべてが文字どおりのまま残ります。シェルと同じです。
同じ変数が二度あれば断る
PORT=8080
PORT=3000
Duplicate variable "PORT" on line 2: it already has a different value
シェルは最後の代入を採り、何も言いません。最初の値はただ消えていました。併合され、書き換えられ、環境から環境へ写された .env では、この沈黙は高くつきます。ファイルを読み、上のほうに PORT=8080 を見て、走っているのは 3000 番、ということになるからです。いまは変換が止まり、変数名と行番号を告げます。まったく同じ代入は何も語らないので、これまでどおり通ります。本物の欠陥で、このページを書く過程で見つけ、直しました。
すべては文字列
ID=007
ACTIVE=true
COUNT=3
{
"ID": "007",
"ACTIVE": "true",
"COUNT": "3"
}
環境変数は文字です。基本ソフトが保存するのも、process.env が返すのもそれです。ここで COUNT を数として型付けするのは推量であり、ID を数にすればゼロが失われます。変換は文字を保ち、型付けは意味の分かっている場所、つまりあなたのコードに残します。
この形式が運ばないもの
- 展開。
PATH=$HOME/binは$HOME/binのままです。$HOMEの中身は、このページからは見えない機械に依存します。 - 入れ子。
.envは名前と値の平らな並びで、区画も構造もありません。 - 引用符付きの値のあとのコメント。
A="a #b"は井桁を保ちます。引用符の内側にあるからです。裸の値のあとであれば、#はコメントを開き、そこで切られます。 - 好きな名前。 名前は英字、数字、
_、.から成り、数字では始まりません。シェル自身が課す規則です。それ以外は、どの.envも受け取れない JSON に書き込む代わりに、名指しして断ります。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。