مدیریت بهتر تنظیمات در node js
چگونه با دردسر کمتری تنظیمات محیط پروداکشن و توسعه لوکال را در node js پیادهسازی کنیم
بسیاری از برنامهی های بکاند node.js ای نیازمند دریافت تنظیماتی هستند تا بتوان آنها را اجرا کرد. در این پست میخواهیم راه حلی را پیشنهاد دهیم که در صورت پیاده سازی، هم محیط توسعهی حرفهای تری داشته باشیم و هم برنامهی ما بسیار راحت تر در محیط های مختلف به وضعیت پروداکشن اجرا شود..
قبل از شروع، دو پیش فرض و خط قرمز برای خودمان مشخص کرده ایم:
۱- تنظیمات محیط عملیاتی در گیت یا ایمیج داکر کامیت پوش نشود
۲- بدون دغدغه در هر محیط عملیاتی ابری به سادگی قابل تنظیم و انتشار باشد
برای رعایت این دو قانون میتوان از روش زیر استفاده کرد. تجربه نشان داده که استفاده از روش های دیگر، مثلا فایل جیسان و پکیج های لود کنندهی فایل تنظیمات هر دو قانون بالا را زیر پا میگذارد.
ابتدا در روت پروژه یک فایل به اسم config.js میسازیم. وظیفهی این فایل، مپ کردن environment variable ها به آبجکت تنظیمات برنامه است.
module.exports = {
app: {
host: process.env.HOST ?? '0.0.0.0'
port: process.env.PORT ?? 3000
},
redis: {
host: process.env.REDIS_HOST ?? '127.0.0.1'
port: process.env.REDIS_PORT ?? 6379
}
}
همان طور که می بینید، مقادیر پیش فرض در صورت تنظیم نشدن env نیز در همین فایل config.js مشخص شده است.
برای کدنویسی در محیط تستی یا سیستم لوکال خودتان، می توانید فایل .env را تنظیم کنید و برای اعمال آن از پکیج dotenv استفاده کنید. این مورد را در نظر داشته باشید که استفاده از این پکیج فقط در محیط توسعه و لوکال باشد. پس با توجه به این نیازمندی، فایل config.js بالا را به صورت زیر تغییر می دهیم.
if (process.env.NODE_ENV !== 'production') {
// load env file to process.env locally
require('dotenv').config()
}
module.exports = {
app: {
host: process.env.HOST ?? '0.0.0.0'
port: process.env.PORT ?? 3000
},
redis: {
host: process.env.REDIS_HOST ?? '127.0.0.1'
port: process.env.REDIS_PORT ?? 6379
}
}
تنظیمات برنامه node js ای تان به راحتی هر چه تمامتر در تمامی محیط های انتشار اجرا خواهد شد و این پیادهسازی به خوبی جوابگوی این نیازمندی خواهد بود.
یک راه جدیدتر که در node js 20 معرفی شده استفاده از command line زیر موقع اجرای برنامه است. در صورت استفاده از آن دیگر نیازی به پکیج dotenv و سه خط اول فایل config.js بالا نخواهد بود.
# node version 20 or higher
node --env-file=.env app.js
سایت node js در این مقاله مفصل در مورد این ویژگی جدید توضیح داده است.
- مطلب بعدی: پیش به سوی تایپ اسکریپتی شدن
حالا که تا اینجا اومدی، یه فنجون قهوه مهمون مون کن ☕ پرداخت آنلاین دونیت