تكوين تطبيقات JavaScript (Node.js): مكتبات dotenv, convict, nconf

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

تكوين تطبيقات JavaScript (Node.js): أفضل المكتبات والممارسات



أي تطبيق Node.js جاد يتطلب نظام تكوين مرن وآمن. كلمات مرور قواعد البيانات، مفاتيح API، منافذ الخوادم، مستويات التسجيل - كل هذه المعلمات يجب أن تكون منفصلة عن الكود، وقابلة للتغيير بسهولة في بيئات مختلفة (التطوير، الاختبار، الإنتاج)، والأهم من ذلك، ألا تصل إلى نظام التحكم في الإصدارات.



في هذه المقالة، سنستعرض المكتبات الثلاث الأكثر شيوعًا لإدارة التكوين في Node.js: dotenv و convict و nconf. ستتعلم كيفية تكوين التطبيقات بشكل صحيح، وتجنب الأخطاء الشائعة، واختيار الأداة المناسبة لمهامك.



1. dotenv - البساطة والأمان



dotenv هي المكتبة الأكثر شيوعًا لتحميل متغيرات البيئة من ملف .env. ميزتها الرئيسية هي البساطة. كل ما عليك فعله هو إنشاء ملف .env، وإضافة المعلمات الخاصة بك إليه، وتقوم المكتبة بتحميلها إلى process.env.



التثبيت والاستخدام الأساسي



npm install dotenv


قم بإنشاء ملف .env في جذر المشروع:



PORT=3000DB_HOST=localhostDB_USER=adminDB_PASS=supersecretNODE_ENV=development


في بداية تطبيقك (عادةً في app.js أو index.js) أضف:



require('dotenv').config();

const express = require('express');const app = express();

const port = process.env.PORT || 3000;

app.listen(port, () => { console.log(`الخادم يعمل على المنفذ ${port}`);});


قواعد مهمة للعمل مع dotenv



  • لا تقم أبدًا بإضافة ملف .env إلى Git. أضفه إلى .gitignore.
  • أنشئ ملف .env.example يحتوي على قالب لجميع المتغيرات (بدون قيم حقيقية). سيساعد ذلك المطورين الجدد على فهم الأمور بسرعة.
  • لبيئة الإنتاج، استخدم متغيرات البيئة الحقيقية المحددة على الخادم. dotenv مطلوب فقط للتطوير.
  • لا تخزن في .env هياكل بيانات معقدة - فقط نصوص وأرقام.


2. convict - التحقق من الصحة والمخططات



إذا كان dotenv يحل مشكلة "كيفية التحميل"، فإن convict يجيب على سؤال "كيفية التحقق والتنظيم". تتيح لك هذه المكتبة تحديد مخطط تكوين بأنواع بيانات، وقيم افتراضية، وقواعد تحقق من الصحة.



التثبيت ومثال على المخطط



npm install convict


const convict = require('convict');

const config = convict({ env: { doc: 'بيئة التطبيق', format: ['production', 'development', 'test'], default: 'development', env: 'NODE_ENV' }, server: { port: { doc: 'منفذ خادم HTTP', format: 'port', default: 3000, env: 'PORT' } }, db: { host: { doc: 'مضيف قاعدة البيانات', format: String, default: 'localhost', env: 'DB_HOST' }, password: { doc: 'كلمة مرور قاعدة البيانات', format: String, default: '', env: 'DB_PASS', sensitive: true // لا تظهر في السجلات } }});

// تحميل القيمconfig.validate({ allowed: 'strict' });

module.exports = config;


مزايا convict



  • التحقق التلقائي من الصحة - إذا كان في .env نص بدلاً من رقم، ستحصل على خطأ عند التشغيل.
  • التوثيق - حقل doc يعمل كتوثيق مدمج.
  • الأمان - الحقول المميزة بـ sensitive: true لا تظهر في السجلات.
  • دعم الهياكل المتداخلة - مناسب للتكوينات المعقدة.


3. nconf - التسلسل الهرمي للمصادر



nconf

توصيات