ما هي مكتبة config؟
مكتبة config هي وحدة شائعة لـ Node.js، مصممة لإدارة إعدادات التطبيقات. تتيح لك تخزين الإعدادات في ملفات منفصلة (JSON, YAML, JS) وتحميلها تلقائيًا اعتمادًا على البيئة (development, production, staging). هذا يلغي الحاجة إلى ترميز المعاملات بشكل ثابت، مثل مفاتيح API، أو منافذ الخادم، أو سلاسل الاتصال بقاعدة البيانات.
لماذا نحتاجها؟
في المشاريع الحقيقية، غالبًا ما تتغير الإعدادات: محليًا تستخدم رابط قاعدة بيانات واحد، وعلى الخادم تستخدم آخر. بدون وحدة config، سيتعين عليك تغيير المتغيرات يدويًا أو استخدام تركيبات معقدة مع process.env. المكتبة تبسط هذه العملية: فهي تختار الملف تلقائيًا بناءً على متغير البيئة NODE_ENV (مثل development.json أو production.json).
كيف يتم التثبيت؟
قم بتثبيت الوحدة عبر npm:
npm install configالوظائف الأساسية
- التعرف التلقائي على البيئة: افتراضيًا، يبحث عن ملف
default.json، ثم{NODE_ENV}.json. - دعم الصيغ: JSON, YAML, JS, TOML.
- التداخل العميق: الوصول إلى الحقول المتداخلة عبر النقطة (
config.get('database.host')). - الأمان: يمكن إخفاء البيانات الحساسة (كلمات المرور) عبر متغيرات البيئة.
مثال كود بلغة JavaScript (Node.js)
أنشئ هيكل المجلدات:
project/
├── config/
│ ├── default.json
│ └── production.json
├── app.js
└── package.jsonconfig/default.json:
{
"server": {
"port": 3000
},
"database": {
"host": "localhost",
"port": 5432
}
}config/production.json:
{
"server": {
"port": 80
},
"database": {
"host": "prod-db.example.com"
}
}app.js:
const config = require('config');
// الحصول على منفذ الخادم
const port = config.get('server.port');
// الحصول على مضيف قاعدة البيانات
const dbHost = config.get('database.host');
console.log(`Server running on port ${port}`);
console.log(`Database host: ${dbHost}`);
// تشغيل الخادم
const http = require('http');
http.createServer((req, res) => {
res.end('Hello World');
}).listen(port);قم بتشغيله مع بيئات مختلفة:
# افتراضيًا (development)
node app.js
# Server running on port 3000
# Production
NODE_ENV=production node app.js
# Server running on port 80متى يتم استخدامها؟
مكتبة config مثالية لتطبيقات Node.js المتوسطة والكبيرة التي تتطلب فصل الإعدادات حسب البيئات. لا غنى عنها عند النشر على خوادم متعددة، في بنية الخدمات المصغرة، وعند العمل مع البيانات السرية (عبر متغيرات البيئة). بالنسبة للمشاريع الصغيرة أو البرامج النصية، يمكنك الاكتفاء بـ process.env البسيط، لكن config تجعل الكود أنظف وأكثر قابلية للتوسع.