環境変数#

環境変数とは、Node.jsプロセスが実行される環境に関連付けられた変数です。

CLI環境変数#

Node.jsの挙動をカスタマイズするために定義できる環境変数のセットがあります。詳細はCLI環境変数のドキュメントを参照してください。

process.env#

環境変数を操作するための基本的なAPIは process.env です。これは、ユーザーの環境変数があらかじめ格納されたオブジェクトであり、変更や拡張が可能です。

詳細はprocess.envのドキュメントを参照してください。

DotEnv#

.env ファイルで定義された追加の環境変数を扱うための一連のユーティリティです。

安定性: 2 - Stable

.env ファイル#

.env ファイル(dotenvファイルとも呼ばれる)は、環境変数を定義するファイルであり、Node.jsアプリケーションはこれらを操作できます(dotenv パッケージによって広まりました)。

以下は、基本的な .env ファイルの内容の例です。

MY_VAR_A = "my variable A"
MY_VAR_B = "my variable B" 

このタイプのファイルは様々なプログラミング言語やプラットフォームで使用されていますが、正式な仕様は存在しません。そのため、Node.jsは以下に説明する独自の仕様を定義しています。

.env ファイルは、キーと値のペアを含むファイルです。各ペアは、変数名、等号(=)、変数値の順で表されます。

このようなファイルの名称は通常 .env であるか、.env で始まります(例えば、特定のターゲット環境を示す dev を使った .env.dev のように)。これは推奨される命名規則ですが、必須ではなく、dotenvファイルは任意のファイル名を持つことができます。

変数名#

有効な変数名は、文字(大文字または小文字)、数字、アンダースコア(_)のみを含み、数字で始めることはできません。

より具体的には、有効な変数名は以下の正規表現に一致する必要があります。

^[a-zA-Z_]+[a-zA-Z0-9_]*$ 

推奨される慣習は、必要に応じて大文字とアンダースコア、数字を使用することですが、上記の定義に従う変数名であれば問題なく動作します。

例えば、MY_VAR, MY_VAR_1, my_var, my_var_1, myVar, My_Var123 は有効な変数名です。一方、1_VAR, 'my-var', "my var", VAR_#1 は無効です。

変数値#

変数値は任意のテキストで構成され、任意でシングルクォート(')またはダブルクォート(")で囲むことができます。

クォートで囲まれた変数は複数行にまたがることができますが、囲まれていない変数は一行に制限されます。

Node.jsによって解析される際、すべての値はテキストとして解釈されることに注意してください。つまり、どんな値もNode.js内ではJavaScriptの文字列になります。例えば、0, true, { "hello": "world" } という値は、それぞれ数値のゼロ、ブール値の truehello プロパティを持つオブジェクトではなく、リテラル文字列の '0', 'true', '{ "hello": "world" }' になります。

有効な変数の例

MY_SIMPLE_VAR = a simple single line variable
MY_EQUALS_VAR = "this variable contains an = sign!"
MY_HASH_VAR = 'this variable contains a # symbol!'
MY_MULTILINE_VAR = '
this is a multiline variable containing
two separate lines\nSorry, I meant three lines' 
空白#

変数のキーと値の前後にある先頭および末尾の空白文字は、クォートで囲まれていない限り無視されます。

例:

   MY_VAR_A   =    my variable a
    MY_VAR_B   =    '   my variable b   ' 

は、以下と同一に扱われます。

MY_VAR_A = my variable a
MY_VAR_B = '   my variable b   ' 
コメント#

ハッシュタグ(#)文字はコメントの始まりを示し、その行の残りの部分は完全に無視されます。

ただし、クォート内にあるハッシュタグは、他の標準的な文字として扱われます。

例:

# This is a comment
MY_VAR = my variable # This is also a comment
MY_VAR_A = "# this is NOT a comment" 
export プレフィックス#

export キーワードは、変数宣言の前に任意で追加できます。このキーワードは、ファイルに対して行われるすべての処理で完全に無視されます。

これにより、ファイルを修正することなくシェルターミナルで source コマンドによって読み込むことができるため便利です。

export MY_VAR = my variable 

CLIオプション#

.env ファイルは、以下のいずれかのCLIオプションを介して process.env オブジェクトに値を設定するために使用できます。

プログラマティックAPI#

以下の2つの関数により、.env ファイルを直接操作できます。

  • process.loadEnvFile.env ファイルを読み込み、その変数を process.env に設定します。

  • util.parseEnv.env ファイルの生の内容を解析し、その値をオブジェクトで返します。