Skip to main content

Environment Variables

درباره‌ی فایل .env حرف میزنیم و کنترل محیط‌های متفاوت در آن

Start​

فایلی با نام .env در مسیر اصلی پروژه در بالاترین سطح میسازیم

از پکیج dotenv برای پارس کردن مقادیر env استفاده میکنیم

npm install dotenv

Config​

برای پارس دیتا داخل .env باید از پکیج dotenv استفاده کرد و آنرا کانفیگ کرد

در بالاترین فایل کانفیگ زیر را اضافه میکنیم

server.js
const dotenv = require("dotenv");

dotenv.config();

گاهی وقتا ممکنه در لاگ سرور بعضی ارور ها یا وارنینگ‌ها یا پیشنهادهایی بده که میتوینم با استفاده از فلگ quiet اونارو غیر فعال کنیم :

dotenv.config({ quiet: true });

Use​

حال میتوانیم در فایل .env مقادیر دلخواه تعریف کنیم و به آن با استفاده از proccess.env دسترسی به صورت عادی داشته باشیم

.env
API_URL=api.google.com

حال درون هر بخش برنامه میتوان از آن استفاده کرد

const API = process.env.API_URL;

Multiple Environment​

گاهی وقتا متغیر‌های مرتبط با محیط توسعه و محیط پروداکشن متفاوت هستن. برای مثال لینک api متفاوت میتونه باشه یا لینک دیتابیس

ما برای هرکدوم یک فایل env میسازیم و در فایل اصلی .env نوع محیط توسعه رو انتخاب میکنیم و سپس با توجه به آن کتابخونه‌ی dotenv رو طبق اون کانفیگ میکنیم

برای مثال اگر ما ۲ نوع محیط توسعه داشته باشیم یکی development و یکی production برای هرکدام یک فایل میسازیم به ترتیب : .development.env و .production.env

و توی فایل .env مشخص میکنیم که کدام محیط هست و سپس فایل کانفیگ مرتبط رو به dotenv میدیم

.development.env
PORT=8000
API_URL=dev.api.example.com/v1
DB_URL=dev.db.example.com
.production.env
PORT=5031
API_URL=api.example.com/v3
DB_URL=db.example.com
.env
NODE_ENV=production
server.js
dotenv.config();

const NODE_ENV = process.env.NODE_ENV;

if (NODE_ENV === "production") dotenv.config({ path: ".production.env" });
else if (NODE_ENV === "development")
dotenv.config({ path: ".development.env" });

// ----- OR -------

dotenv.config({ path: `.${NODE_ENV}.env` }); // shorter way