Перейти к содержанию

Переменные окружения

latest

Переменные окружения — это переменные, связанные со средой, в которой выполняется процесс Node.js.

Переменные окружения CLI

Набор переменных окружения можно задать, чтобы настроить поведение Node.js; подробнее см. в документации по переменным окружения CLI.

process.env

Основной API для работы с переменными окружения — process.env: объект с предзаполненными пользовательскими переменными окружения, которые можно изменять и дополнять.

Подробнее см. в [документации по process.env][process.env documentation].

DotEnv

Стабильность: 2 – Стабильная

API является удовлетворительным. Совместимость с NPM имеет высший приоритет и не будет нарушена кроме случаев явной необходимости.

Набор утилит для работы с дополнительными переменными окружения, заданными в файлах .env.

Файлы .env

Файлы .env (также называемые dotenv-файлами) задают переменные окружения, с которыми затем могут работать приложения Node.js (подход популяризован пакетом dotenv).

Ниже пример содержимого простого файла .env:

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

Такие файлы используются в разных языках и платформах, но формальной спецификации для них нет, поэтому Node.js определяет собственную спецификацию, описанную ниже.

Файл .env содержит пары «ключ — значение»: имя переменной, знак равенства (=) и значение переменной.

Обычно файл называется .env или имя начинается с .env (например .env.dev, где dev обозначает целевое окружение). Такое именование рекомендуется, но не обязательно: dotenv-файлу можно дать любое имя.

Имена переменных

Допустимое имя переменной может содержать только буквы (в любом регистре), цифры и подчёркивания (_) и не может начинаться с цифры.

Точнее, имя должно соответствовать регулярному выражению:

1
^[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" } дадут строки '0', 'true' и '{ "hello": "world" }', а не число ноль, логическое true и объект со свойством hello.

Примеры допустимых переменных:

1
2
3
4
5
6
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'

Пробелы

Ведущие и завершающие пробельные символы вокруг ключа и значения игнорируются, если они не внутри кавычек.

Например:

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

эквивалентно:

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

Комментарии

Символ решётки (#) начинает комментарий: остаток строки игнорируется полностью.

Решётки внутри кавычек считаются обычными символами.

Например:

1
2
3
# This is a comment
MY_VAR = my variable # This is also a comment
MY_VAR_A = "# this is NOT a comment"

Префиксы export

Перед объявлением переменной можно указать ключевое слово export; оно полностью игнорируется при обработке файла.

Это удобно, чтобы без изменений подключать файл в оболочке (source).

Пример:

1
export MY_VAR = my variable

Параметры CLI

Файлы .env можно использовать для заполнения объекта process.env одним из параметров CLI:

  • [--env-file=file][]

  • [--env-file-if-exists=file][]

Программные API

Две следующие функции позволяют напрямую работать с файлами .env:

  • [process.loadEnvFile][] — загружает файл .env и помещает переменные в process.env

  • [util.parseEnv][] — разбирает сырое содержимое файла .env и возвращает объект

Комментарии