يوفر متغير البيئة معلومات حول البيئة التي تعمل فيها العملية. فهي تقوم بتهيئة منافذ الخادم واتصالات قاعدة البيانات، وإخفاء البيانات الحساسة مثل مفاتيح واجهة برمجة التطبيقات، وغير ذلك الكثير.

تختلف طريقة NestJS لقراءة متغيرات البيئة عن حزمة dotenv القياسية لـ NodeJS.

تتيح لك وحدة تهيئة NestJS إدارة متغيرات البيئة الخاصة بك في خطوات قليلة فقط.

الخطوة 1: تثبيت التبعيات

يوفر NestJS حزمة @ nestjs / config مخصصة تستخدم حزمة dotenv الموجودة تحت الغطاء. تقوم حزمة التبعية الصفرية هذه بتحميل متغيرات البيئة من ملف .env إلى process.env . كائن process.env هو متغير عام يتم إدخاله في وقت التشغيل لاستخدام التطبيق الخاص بك.

قم بتثبيت حزمة تهيئة NestJS عن طريق تشغيل:

 npm install @nestjs /config

تعمل حزمة تهيئة NestJS من خلال عرض وحدة تهيئة وخدمة تهيئة للتطبيق. تحدد وحدة التكوين ملف .env الذي سيقرأه التطبيق. في الوقت نفسه، تعرض خدمة التكوين المعلومات الموجودة داخل ملف .env لبقية التطبيق.

الخطوة الثانية: إنشاء ملفات ENV

يتيح لك تخزين متغيرات البيئة في ملف الوصول إليها بسهولة من أي لغة، عبر أنظمة تشغيل مختلفة. يمكنك التحكم في إصدارات ملفات .env هذه، بحيث تزيد من إمكانية نقل المشروع ويمكن أن تخفف من مشاكل تصحيح الأخطاء.

يختلف أسلوب NestJS الخاص بإنشاء ملفات .env عن طريقة التوصية الرسمية لـ dotenv. وفقًا لوثائق dotenv، يجب ألا تنشئ أكثر من ملف .env واحد في التطبيق. يتيح لك NestJS إنشاء ملفات .env متعددة بأسماء مختلفة.

كممارسة جيدة، يجب عليك دائمًا إنشاء ملفات .env في الدليل الجذر لمشروعك وتضمينها في ملف .gitignore .

لا توجد طريقة خاصة لإنشاء ملف .env – فقط قم بإنشائه وتعديله باستخدام محرر النصوص العادي – ولكن يجب أن يبدأوا بـ .env. على سبيل المثال، env.development .

الخطوة 3: إعداد وحدة التكوين

اتبع الخطوة التالية لإعداد وحدة التهيئة بشكل عام وتحديد مسارات .env :

  1. في ملف الوحدة النمطية الجذرية لمشروعك ( app.modue.ts )، قم باستيراد ConfigModule من @ nestjs / config .
  2. أضف ConfigModule إلى مجموعة الواردات الخاصة بك واستدع التابع forRoot .
  3. قم بتمرير كائن تكوين إلى طريقة forRoot، مع خاصية isGlobal إلى true . يشارك هذا الخيار التكوين من خلال الوحدات النمطية الأخرى في التطبيق الخاص بك، مما يعني أنك لن تضطر إلى إعداده أكثر من مرة.
  4. حدد envFilePath الخاص بك في كائن التكوين الخاص بك. يمكن أن تكون هذه الخاصية إما سلسلة (إذا كان لديك ملف .env واحد) أو مصفوفة تحتوي على جميع ملفات .env وستخبر وحدة التكوين بالملفات التي يجب البحث عنها.
 
@Module ({
imports: [
ConfigModule .forRoot ({
isGlobal: true ,
envFilePath: ' Name(s) of your .env file(s) ' ,
}),


@Module ({
imports: [
ConfigModule .forRoot ({
isGlobal: true ,
envFilePath: ' Name(s) of your .env file(s) ' ,
}),


@Module ({
imports: [
ConfigModule .forRoot ({
isGlobal: true ,
envFilePath: ' Name(s) of your .env file(s) ' ,
}),


@Module ({
imports: [
ConfigModule .forRoot ({
isGlobal: true ,
envFilePath: ' Name(s) of your .env file(s) ' ,
}),


@Module ({
imports: [
ConfigModule .forRoot ({
isGlobal: true ,
envFilePath: ' Name(s) of your .env file(s) ' ,
}),


@Module ({
imports: [
ConfigModule .forRoot ({
isGlobal: true ,
envFilePath: ' Name(s) of your .env file(s) ' ,
}),


@Module ({
imports: [
ConfigModule .forRoot ({
isGlobal: true ,
envFilePath: ' Name(s) of your .env file(s) ' ,
}),

الخطوة 4: استخدام خدمة التهيئة لقراءة متغيرات البيئة

للوصول إلى قيم التكوين، ابدأ باستيراد ConfigService من @ nestjs / config . قم بإدخاله في مُنشئ الفئة عن طريق التصريح عن متغير خاص وتعيين ConfigService على أنه نوعه.

على سبيل المثال:

 constructor (private config: ConfigService) {}

للوصول إلى متغير، استدع التابع get في ConfigService في المتغير الخاص . قم بتمريره إلى نوع البيانات التي تريدها كعنصر عام، واسم متغير البيئة الذي تريد الوصول إليه.

على سبيل المثال:

 const envVar = this.config.get < string > ( ' ENV_VALUE ' );

تبحث ConfigService عن قيمة تحمل الاسم “ENV_VALUE” وتقوم بإرجاع قيمتها.

لاحظ أنه إذا احتوى ملفان .env على نفس اسم الخاصية، فسيكون للملف الأول المحدد في envFilePath الأسبقية.

أهمية متغيرات البي
ئة

تعد متغيرات البيئة جزءًا أساسيًا من البرنامج، لا سيما في التطبيقات الأكثر تعقيدًا. إنها تتيح لك التحكم في تكوين البرنامج من خلال آلية مشتركة سهلة الفهم.

يمكنك استخدام متغيرات البيئة للتحكم في جميع جوانب التكوين. من إعدادات قاعدة البيانات المختلفة إلى البيانات الحساسة مثل مفاتيح API وبيانات الاعتماد، فإنها تتيح لك تغيير التكوين دون لمس كود المصدر الأساسي.