ما الذي يساعدك هذا المنسق .env على فعله
- توحيد أسطر `KEY=VALUE` مع الحفاظ على التعليقات والأسطر الفارغة للتجميع البشري المقروء
- تنظيف المسافات حول `=` والقيم لتسهيل المسح الضوئي واختلافات أكثر إحكاما في المراجعات
- كشف المفاتيح المكررة حتى تتمكن من رؤية أيها يفوز فعلياً أثناء التشغيل بدلاً من التخمين
- تقليم المسافات البيضاء الزائدة و (اختيارياً) ضمان سطر جديد نهائي في نهاية الملف عبر خيار **إدراج سطر جديد نهائي**
- الحفاظ على أسطر التعليقات (`# ...`) والحفاظ على أحرف `#` المقتبسة داخل القيم سليمة
- الحفاظ على العناصر النائبة مثل `${VAR}` وتسلسلات الهروب تماماً كما هي مكتوبة دون إجراء توسيع
- التعامل بلطف مع المشاريع متعددة المنصات من خلال توحيد التخطيط لـ LF/CRLF وتجنب مفاجآت BOM
- جعل استخلاص `.env.example` خالٍ من الأسرار سهلاً (نسخ المفاتيح والهيكل، إسقاط قيم الإنتاج)
- محرر ودود: الصق أو حمِّل ملفات بنمط `.env`، معاينة النتيجة، ثم انسخ أو حمِّل المخرجات النظيفة
🔧 كيفية تنظيف وتنسيق ملف .env الخاص بك for env-formatter
1. الصق أو ارفع ملف .env الخاص بك
أسقط ملف `.env` الخاص بك في المحرر أو الصق المحتوى مباشرة. تم تصميم الأداة لتنسيقات dotenv النموذجية مثل `.env` و `.env.local` و `.env.production` و `.env.test` و `.env.staging` و `.env.example`، إلخ.
2. راجع وعدّل خيارات التنسيق
قم بتمكين أو تعطيل الخيارات المتاحة (مثل **إدراج سطر جديد نهائي**) وقرر كيف تريد تنظيم المفاتيح والتعليقات. تستخدم العديد من الفرق هذه الخطوة لفرض تجميع متسق - على سبيل المثال، أقسام `APP_` و `DB_` و `NEXT_PUBLIC_`.
3. معاينة، نسخ أو تحميل
راجع الناتج المنظف، وتحقق من أن التكرارات والتعليقات تبدو صحيحة، ثم انسخها مرة أخرى إلى محررك أو حمّل ملف `.env` المنسق. استخدم الهيكل الموحد كأساس لـ `.env.example` أو متغيرات البيئة الأخرى.
المواصفات الفنية
الملفات والأنواع المدعومة
يتعامل المنسق مع ملفات التكوين ذات النمط dotenv القياسي، بما في ذلك اصطلاحات الأطر الشائعة.
| الامتداد / النمط | النوع | الاستخدام النموذجي |
|---|---|---|
| .env | التكوين الأساسي | الإعدادات الافتراضية لجميع البيئات |
| .env.local | تجاوزات محلية | خاص بالجهاز (عادةً ما يتم تجاهله في git) |
| .env.development | نوع بيئة | إعدادات التطوير |
| .env.production | نوع بيئة | إعدادات النشر |
| .env.test | نوع بيئة | اختبارات CI / الوحدة |
| .env.staging | نوع بيئة | تكوينات الاستعداد أو المعاينة |
| .env.example / .env.sample | قالب | ملف مثال مشترك بدون أسرار حقيقية |
| أنواع MIME | text/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=falseCI وبوابات الجودة
- إضافة فحص للتأكد من عدم وصول مفاتيح مكررة إلى فروع `main` أو `master`
- فشل البناء إذا انتهكت ملفات `.env` تنسيق أو تسمية أساسية
- الحفاظ على مراجعات التهيئة مركزة على القيم والدلالات، وليس تفاصيل المسافات
❓ Frequently Asked Questions
كيف يتم التعامل مع المفاتيح المكررة؟
هل سيتم الحفاظ على التعليقات والأسطر الفارغة؟
هل تقوم بتوسيع مراجع ${VAR}؟
هل من الآمن لصق الأسرار الحقيقية؟
ماذا عن مشاكل CRLF مقابل LF وBOM؟
هل يغير هذا طريقة قراءة التطبيق لملف البيئة؟
Pro Tips
لا تضع الأسرار الحقيقية في Git أبدًا. ضع ملف `.env.example` بالمفاتيح وتلميحات آمنة، وقم بتحميل القيم الحقيقية من خزنة أو مخزن أسرار CI أو التجاوزات المحلية.
اجمع المفاتيح حسب المجال (`APP_`, `DB_`, `NEXT_PUBLIC_`، إلخ) وحافظ على ترتيب كل مجموعة بشكل متناسق لتقليل العبء المعرفي للقراء الجدد.
فرض نمط .env موحد عبر خطافات pre-commit أو فحوصات CI حتى لا تضطر للجدال حول المسافات في مراجعات الكود.
ضع القيم التي تحتوي على مسافات أو `#` أو `=` أو أحرف محجوزة في shell بين علامتي اقتباس لتجنب مشاكل التحليل الدقيقة عبر تطبيقات dotenv المختلفة.
Additional Resources
Other Tools
- محسن CSS
- محسن HTML
- محسن Javascript
- محسن PHP
- منتقي الألوان
- مستخرج Sprite
- فك تشفير Base64
- تشفير Base64
- منسق Csharp
- منسق CSV
- Dockerfile Formatter
- منسق Elm
- منسق Go
- منسق Graphql
- منسق Hcl
- منسق INI
- منسق JSON
- منسق Latex
- منسق Markdown
- منسق Objectivec
- Php Formatter
- منسق Proto
- منسق Python
- منسق Ruby
- منسق Rust
- منسق Scala
- منسق سكريبت Shell
- منسق SQL
- منسق SVG
- منسق Swift
- منسق TOML
- Typescript Formatter
- منسق XML
- منسق YAML
- منسق Yarn
- مختصر CSS
- Html Minifier
- Javascript Minifier
- مختصر JSON
- مصغر XML
- عارض رؤوس HTTP
- PDF إلى نص
- مختبر Regex
- مدقق ترتيب SERP
- بحث Whois