Loading…

حول منسق .env عبر الإنترنت

اجعل ملفات dotenv الخاصة بك قابلة للقراءة، متوقعة وآمنة للمشاركة. يقوم منسق .env هذا بتحليل أسطر KEY=VALUE، وتنظيم المسافات، والحفاظ على التعليقات، ومساعدتك في توحيد الهيكل قبل الالتزام أو إنشاء `.env.example` خالٍ من الأسرار لزملاء الفريق. وهو متوافق مع Node `dotenv`، و`python-dotenv`، وRuby `dotenv` ومعظم محمِّلات dotenv الأخرى.

ما الذي يساعدك هذا المنسق .env على فعله

  • توحيد أسطر `KEY=VALUE` مع الحفاظ على التعليقات والأسطر الفارغة للتجميع البشري المقروء
  • تنظيف المسافات حول `=` والقيم لتسهيل المسح الضوئي واختلافات أكثر إحكاما في المراجعات
  • كشف المفاتيح المكررة حتى تتمكن من رؤية أيها يفوز فعلياً أثناء التشغيل بدلاً من التخمين
  • تقليم المسافات البيضاء الزائدة و (اختيارياً) ضمان سطر جديد نهائي في نهاية الملف عبر خيار **إدراج سطر جديد نهائي**
  • الحفاظ على أسطر التعليقات (`# ...`) والحفاظ على أحرف `#` المقتبسة داخل القيم سليمة
  • الحفاظ على العناصر النائبة مثل `${VAR}` وتسلسلات الهروب تماماً كما هي مكتوبة دون إجراء توسيع
  • التعامل بلطف مع المشاريع متعددة المنصات من خلال توحيد التخطيط لـ LF/CRLF وتجنب مفاجآت BOM
  • جعل استخلاص `.env.example` خالٍ من الأسرار سهلاً (نسخ المفاتيح والهيكل، إسقاط قيم الإنتاج)
  • محرر ودود: الصق أو حمِّل ملفات بنمط `.env`، معاينة النتيجة، ثم انسخ أو حمِّل المخرجات النظيفة

🔧 كيفية تنظيف وتنسيق ملف .env الخاص بك for env-formatter

1

1. الصق أو ارفع ملف .env الخاص بك

أسقط ملف `.env` الخاص بك في المحرر أو الصق المحتوى مباشرة. تم تصميم الأداة لتنسيقات dotenv النموذجية مثل `.env` و `.env.local` و `.env.production` و `.env.test` و `.env.staging` و `.env.example`، إلخ.

2

2. راجع وعدّل خيارات التنسيق

قم بتمكين أو تعطيل الخيارات المتاحة (مثل **إدراج سطر جديد نهائي**) وقرر كيف تريد تنظيم المفاتيح والتعليقات. تستخدم العديد من الفرق هذه الخطوة لفرض تجميع متسق - على سبيل المثال، أقسام `APP_` و `DB_` و `NEXT_PUBLIC_`.

3

3. معاينة، نسخ أو تحميل

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

المواصفات الفنية

الملفات والأنواع المدعومة

يتعامل المنسق مع ملفات التكوين ذات النمط dotenv القياسي، بما في ذلك اصطلاحات الأطر الشائعة.

الامتداد / النمطالنوعالاستخدام النموذجي
.envالتكوين الأساسيالإعدادات الافتراضية لجميع البيئات
.env.localتجاوزات محليةخاص بالجهاز (عادةً ما يتم تجاهله في git)
.env.developmentنوع بيئةإعدادات التطوير
.env.productionنوع بيئةإعدادات النشر
.env.testنوع بيئةاختبارات CI / الوحدة
.env.stagingنوع بيئةتكوينات الاستعداد أو المعاينة
.env.example / .env.sampleقالبملف مثال مشترك بدون أسرار حقيقية
أنواع MIMEtext/plain, text/x-dotenv, application/x-envأنواع المحتوى الشائعة المستخدمة من قبل المحررات والأدوات

قواعد التحليل (نمط dotenv)

تم تصميم المُنسِّق ليكون متوافقًا مع محللات dotenv الشائعة عبر اللغات.

الجانبالسلوكملاحظات
المفاتيححساسة لحالة الأحرف، عادةً `A–Z`، أرقام و `_`يُوصى بـ UPPER_SNAKE_CASE لسهولة القراءة
التعيينأسطر بالصيغة `KEY=VALUE`يتم توحيد المسافات حول `=` والقيم بواسطة المُنسِّق
التعليقاتالأسطر التي تبدأ بـ `#`يتم التعامل مع `#` داخل القيم المُقتبسة كجزء من القيمة
علامات الاقتباسفردية `'…'` أو مزدوجة `"…"`يتم الحفاظ على الهروب مثل `\n` و `\t` داخل علامات الاقتباس المزدوجة
الاستيفاءيتم الاحتفاظ بـ `${VAR}` حرفيًالا يتم إجراء أي توسيع أو تقييم شبيه بالصدفة
الأسطر الفارغةيتم الحفاظ عليها للحفاظ على الأقسام المنطقيةلا يزال بإمكانك طيها أو إعادة تجميعها يدويًا كما تريد
المكرراتيتم عرض الأسطر المتعددة التي تحتوي على نفس المفتاحسلوك dotenv النموذجي: القيمة الأخيرة هي الفائزة في وقت التشغيل

التوحيد وفواصل الأسطر

يهدف المُنسِّق إلى تقليل الضوضاء الخاصة بالمنصة في الاختلافات: يمكن توحيد المسافات حول `=`، والمسافات الزائدة في النهاية وفواصل الأسطر النهائية. تضمن خيار **إدراج فاصل سطر نهائي** وجود فاصل سطر EOF بحيث يظل Git والمحررات المختلفة متزامنين حتى عبر اختلافات LF/CRLF.

الخصوصية والسلامة

يتم التعامل مع التنسيق بواسطة خلفية آمنة مخصصة لهذه الأداة ويهدف للمعالجة العابرة فقط—لا يتم الاتصال بواجهات برمجة تطبيقات الطرف الثالث. ومع ذلك، فإن الممارسة الأكثر أمانًا هي تجنب لصق الأسرار الإنتاجية في الأدوات المستندة إلى المتصفح: يُفضل تحرير ملفات `.env.example` المُنقَّاة والاحتفاظ بالأسرار الحقيقية في خزنة أو مخزن أسرار CI.

بدائل وسطور الأوامر

تفضل الطرفية؟ إليك بعض اللبنات الأساسية لمحاكاة بعض سلوكيات هذا المُنسِّق باستخدام أدوات CLI الشائعة.

Linux/macOS

ترتيب المفاتيح (أساسي، يتجاهل التعليقات/الأسطر الفارغة)

grep -v '^\s*#' .env | grep -v '^\s*$' | sort > sorted.env

يرتب الأسطر غير التعليقية أبجديًا بحيث يسهل فحص ومقارنة مفاتيح التكوين.

محاذاة على `=` باستخدام awk

awk -F '=' 'BEGIN{max=0} /^[[:space:]]*#/||NF<2{next} {gsub(/[[:space:]]+$/,"",$1); if(length($1)>max) max=length($1)} END{print max}' .env | xargs -I{} awk -F '=' -v w={} 'BEGIN{OFS="="} /^[[:space:]]*#/||NF<2{print; next} {k=$1; sub(/[[:space:]]+$/,"",k); v=substr($0,index($0,"=")+1); gsub(/^\s+|\s+$/,"",v); printf("% -" w "s = %s\n", k, v)}' .env > aligned.env

نص awk ثنائي المراحل يقيس أوسع مفتاح ثم يمحاذاة جميع تعيينات `KEY = VALUE` لتلك العرض.

ويندوز (PowerShell)

فرز وإزالة المفاتيح المكررة (الاحتفاظ بالقيمة الأخيرة)

(Get-Content .env) | Where-Object {$_ -notmatch '^\s*#' -and $_ -notmatch '^\s*$'} | Group-Object { $_.Split('=')[0].Trim() } -AsHashTable -AsString | ForEach-Object { $_.Value[-1] } | Set-Content cleaned.env

يجمع الأسطر حسب المفتاح ويكتب فقط التواجد الأخير، محاكياً لكيفية حل محملات dotenv للقيم المكررة.

Node.js (متعدد المنصات)

منسق بسيط: تحليل، فرز، محاذاة، كتابة

node -e "const fs=require('fs');const s=fs.readFileSync('.env','utf8');const lines=s.split(/\r?\n/);const kv=[];const others=[];for(const l of lines){if(!l||/^\s*#/.test(l)||!l.includes('=')){others.push(l);continue;}const i=l.indexOf('=');kv.push([l.slice(0,i).trim(),l.slice(i+1).trim()]);}kv.sort((a,b)=>a[0].localeCompare(b[0]));const w=Math.max(...kv.map(([k])=>k.length),0);const out=[...kv.map(([k,v])=>k.padEnd(w)+" = "+v),...others];fs.writeFileSync('formatted.env',out.join('\n'));"

نص Node مضغوط يمكنك تكييفه ليصبح منسقاً مخصصاً للاستخدام المحلي أو في CI.

حالات الاستخدام الشائعة لمنسق .env

جاهزية الإنتاج والنظافة

  • اكتشاف المفاتيح المكررة عن طريق الخطأ قبل نشر الخدمات الحرجة
  • توحيد المسافات البيضاء وسطور نهاية الملف لتجنب الاختلافات المزعجة
  • توحيد الهيكل قبل إنشاء `.env.example` أو قوالب الأسرار
# ملف .env للإنتاج
NODE_ENV=production
API_URL=https://api.example.com
LOG_LEVEL=info

التعاون بين الفريق والانضمام

  • تقليل الضوضاء في طلبات السحب بفرض تخطيط موحد لـ .env عبر جميع الخدمات
  • إيداع ملف `.env.example` نظيف بدلاً من الأسرار الحقيقية لجعل الانضمام أكثر أماناً
  • مساعدة أعضاء الفريق الجدد على رؤية جميع مفاتيح التهيئة المطلوبة بنظرة سريعة
# .env.example
API_URL=
API_KEY=
DEBUG=false

CI وبوابات الجودة

  • إضافة فحص للتأكد من عدم وصول مفاتيح مكررة إلى فروع `main` أو `master`
  • فشل البناء إذا انتهكت ملفات `.env` تنسيق أو تسمية أساسية
  • الحفاظ على مراجعات التهيئة مركزة على القيم والدلالات، وليس تفاصيل المسافات

❓ Frequently Asked Questions

كيف يتم التعامل مع المفاتيح المكررة؟

معظم محملات dotenv تعامل القيمة الأخيرة لأي مفتاح معين على أنها الفعالة. تم تصميم هذا المنسق لإظهار المفاتيح المكررة بوضوح حتى تتمكن من تحديد الإدخالات التي تريد الاحتفاظ بها بدلاً من شحن تهيئة متضاربة بصمت.

هل سيتم الحفاظ على التعليقات والأسطر الفارغة؟

نعم. يتم الحفاظ على أسطر التعليق الكاملة، ويتم الاحتفاظ بالأسطر الفارغة حتى يبقى تجميعك المنطقي مقروءاً. يمكنك仍然 تعديل تباعد الأقسام يدوياً إذا كنت تفضل تخطيطاً أكثر كثافة أو إحكاما.

هل تقوم بتوسيع مراجع ${VAR}؟

لا. يتم التعامل مع العناصر النائبة مثل `${DB_HOST}` كنص عادي. لا يقوم المنسق بتوسيع أو التحقق من صحة أو تنفيذ مراجع البيئة، لذا تظل في سيطرة كاملة على كيفية معالجة الاستيفاء في وقت التشغيل.

هل من الآمن لصق الأسرار الحقيقية؟

تم بناء المنسق لمعالجة البيانات بشكل عابر على الخادم الخلفي لهذه الأداة دون الاتصال بواجهات برمجة تطبيقات خارجية. ومع ذلك، فإن الممارسة الأكثر أماناً هي تجنب لصق أسرار الإنتاج في أي أداة تعتمد على المتصفح: قم بإيداع ملفات `.env.example` المعقمة فقط واعتمد على مدير أسرار مخصص أو مخزن أسرار CI للقيم الحقيقية.

ماذا عن مشاكل CRLF مقابل LF وBOM؟

غالبًا ما تسبب الأسطر الجديدة غير المتسقة وبقايا BOM UTF-8 العشوائية اختلافات قبيحة ومفاجآت في التحليل. قم بإقران هذه الأداة بإعدادات المحرر (على سبيل المثال، الحفظ دائمًا بـ LF وبدون BOM) حتى تبقى ملفات dotenv متسقة عبر أنظمة التشغيل وبيئات التطوير.

هل يغير هذا طريقة قراءة التطبيق لملف البيئة؟

لا. الهدف هو الحفاظ على الدلالات سليمة مع جعل الملف أسهل للقراءة. تبقى المفاتيح والقيم والتعليقات وظيفيًا كما هي، بافتراض أن ملف dotenv الأصلي كان صالحًا للحمل الخاص بك.

Pro Tips

Security Tip

لا تضع الأسرار الحقيقية في Git أبدًا. ضع ملف `.env.example` بالمفاتيح وتلميحات آمنة، وقم بتحميل القيم الحقيقية من خزنة أو مخزن أسرار CI أو التجاوزات المحلية.

Best Practice

اجمع المفاتيح حسب المجال (`APP_`, `DB_`, `NEXT_PUBLIC_`، إلخ) وحافظ على ترتيب كل مجموعة بشكل متناسق لتقليل العبء المعرفي للقراء الجدد.

Best Practice

فرض نمط .env موحد عبر خطافات pre-commit أو فحوصات CI حتى لا تضطر للجدال حول المسافات في مراجعات الكود.

Best Practice

ضع القيم التي تحتوي على مسافات أو `#` أو `=` أو أحرف محجوزة في shell بين علامتي اقتباس لتجنب مشاكل التحليل الدقيقة عبر تطبيقات dotenv المختلفة.

Additional Resources

Other Tools