Как да персонализирате Node.js .env файлове за различни етапи на околната среда

Попадали ли сте някога в ситуация, в която са ви били необходими персонализирани променливи на средата за различни етапи на разработка на вашето приложение? Ето едноредово решение.

Разработването е много по-лесно от изобретяването на .envфайла. Можете лесно да зададете променливите и стойностите на вашата среда със синтаксиса ENV_VARIABLE=VALUEи бум! Тези променливи се зареждаха като променливи на вашата среда, което дава възможност за бърз достъп до тях:

console.log(process.env.ENV_VARIABLE)

В случай, че все още се чудите какво означава всичко това, е, вероятно сте нов за .envфайла. Всъщност това е прост конфигурационен текстов файл, който се използва за дефиниране на някои променливи, които искате да предадете в средата на вашето приложение.

Този файл се нуждае от нещо като парсер, за да работи. Анализаторът чете определенията на променливите едно по едно и ги анализира в околната среда. Той използва формата ENV_VARIABLE = VALUE (в случая на Node.js :)process.env[ENV_VARIABLE]=VALUE .

Разбира се, това не е вградена функция в Node.js. Трябва да го проектирате с популярен модул, наречен dotenv .

Това е хубаво заобиколно решение, тъй като наистина улесни разработването между съвместните разработчици и в общността на разработчиците като цяло. Аз лично използвах модула dotenv , докато не се закъсах , опитвайки се да намеря решение, което може да ме накара да използвам различен конфигурационен файл за определена среда. Това би било още по-хладно ... нали? Да! Но за съжаление, dotenvмодул не ни предоставя това добро.

И какво следва? Имаме нужда от това нещо, за да улесним разработката и тестването през различните етапи на разработка!

Какво ще кажете за персонализирани .env файлове за различни етапи на средата?

Не мислите ли, че това би било добро решение? Дефиниране на персонализирани променливи на средата само чрез създаване на .env.envname файл? Готино! Това е, което custom-env дойде да направи.

Персонализираната env е библиотека, създадена, за да улесни разработката, като позволява множество конфигурации .env за различни среди. Това се прави чрез зареждане на променливи на средата от .env.envname файл в process.envобекта на възела .

Инсталация

Просто го вземете със следната команда:

npm i custom-env

Употреба

require('custom-env').env()

По подразбиране custom-env избира .env файла за вашия етап на разработка. За да персонализирате обаче за различен етап, добавете името като суфикс, както в .env.envname.

Пример

Можем да дефинираме персонализирана променлива на средата за етапно развитие.

  • Създайте .env.staging файл
  • Дефинирайте променливите си
APP_ENV=staging APP_NAME=custom environment app DB_HOST=localhost DB_USER=user DB_PASS=pass
  • Достъп до вашите променливи
// Require custom-env and set your preferred env file require ('custom-env').env('staging') console.log(process.env.APP_ENV) console.log(process.env.APP_NAME) console.log(process.env.DB_HOST) console.log(process.env.DB_PASS)

Очакван резултат

staging custom environment app localhost user pass

Това е, доста лесно. Чувствайте се свободни да дефинирате повече променливи за различни етапи, които смятате, че имате, като:

.env.testing, .env.staging, .env.server1, .env.server2, .env.localhost

Задайте текущата среда

Можете да кажете на custom-env да използва конфигурация, която съответства на текущия ви етап на развитие, като предадете trueкъм env()метод.

Пример

Файл: index.js

// Pass true to env() to make it use the current environment stage. require('custom-env').env(true) console.log(process.env.APP_NAME) console.log(process.env.USERNAME) console.log(process.env.PASSKEY)

Сега нека дефинираме конфигурационен файл за подреждане:

Файл: .env.staging

APP_NAME=Staging Node App USER_NAME=John PASSKEY=J*h*

Сега нека обслужваме възел с променителната среда:

NODE_ENV=staging node index.js

Очакван резултат

Ето!

Пълна документация

За пълната документация на custom-env посетете страницата npm//www.npmjs.com/package/custom-env

Програмен код

Можете да получите или да допринесете за custom-envизходен код на //github.com/erisanolasheni/custom-env

Честито кодиране!