كيفية تخصيص ملفات .env Node.js لمراحل البيئة المختلفة

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

لقد كان التطوير أسهل بكثير منذ اختراع .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 . رائع! هذا هو ما أصبحت البيئة المخصصة لتفعله.

إن بيئة مخصصة هي مكتبة تم إنشاؤها لتسهيل التطوير من خلال السماح بتكوين .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

مصدر الرمز

يمكنك الحصول على بيئة مخصصة أو المساهمة فيهاكود المصدر في //github.com/erisanolasheni/custom-env

ترميز سعيد!