Loading…

درباره قالب‌گذار آنلاین .env

فایل‌های dotenv خود را قابل خواندن، قابل پیش‌بینی و ایمن برای اشتراک‌گذاری کنید. این قالب‌گذار .env خطوط KEY=VALUE را تجزیه می‌کند، فاصله‌ها را مرتب می‌کند، نظرات را حفظ می‌نماید و به شما کمک می‌کند ساختار را قبل از commit کردن یا تولید یک `.env.example` بدون رمز برای هم‌تیمی‌ها استانداردسازی کنید. با `dotenv` Node، `python-dotenv`، Ruby `dotenv` و اکثر لودرهای دیگر با سبک dotenv سازگار است.

این قالب‌گذار .env چه کمکی به شما می‌کند

  • خطوط `KEY=VALUE` را نرمال‌سازی می‌کند در حالی که نظرات و خطوط خالی برای گروه‌بندی قابل خواندن توسط انسان حفظ می‌شوند
  • فاصله‌های اطراف `=` و مقادیر را پاک می‌کند برای اسکن آسان‌تر و diffهای فشرده‌تر در بررسی‌ها
  • کلیدهای تکراری را نشان می‌دهد تا ببینید کدام یک در زمان اجرا واقعاً اعمال می‌شود به جای حدس زدن
  • فاصله‌های انتهایی را حذف می‌کند و (به صورت اختیاری) از طریق گزینه **درج خط جدید نهایی** یک خط جدید در انتهای فایل تضمین می‌کند
  • خطوط نظرات (`# ...`) را حفظ می‌کند و کاراکترهای `#` داخل مقادیر را دست‌نخورده نگه می‌دارد
  • placeholders مانند `${VAR}` و دنباله‌های escape را دقیقاً همانطور که نوشته شده‌اند حفظ می‌کند بدون انجام expansion
  • با پروژه‌های چندسکویی به خوبی کار می‌کند با نرمال‌سازی layout برای LF/CRLF و جلوگیری از surprises مربوط به BOM
  • استخراج یک `.env.example` بدون رمز را آسان می‌کند (کپی کلیدها و ساختار، حذف مقادیر production)
  • ویرایشگر دوستانه: فایل‌های با سبک `.env` را paste یا upload کنید، نتیجه را پیش‌نمایش کنید، سپس خروجی تمیز شده را کپی یا دانلود نمایید

🔧 نحوه پاک‌سازی و قالب‌دهی فایل .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 همگام بمانند.

حریم خصوصی و امنیت

فرمت‌دهی توسط یک بک‌اند امن مخصوص این ابزار مدیریت می‌شود و فقط برای پردازش موقت در نظر گرفته شده است—هیچ API شخص ثالثی تماس گرفته نمی‌شود. با این حال، امن‌ترین روش هنوز اجتناب از چسباندن اسرار تولید در ابزارهای مبتنی بر مرورگر است: ترجیحاً فایل‌های پاک‌شده `.env.example` را ویرایش کنید و اسرار واقعی را در یک گاوصندوق یا مخزن اسرار CI نگه‌دارید.

جایگزین‌ها و قطعات خط فرمان

ترمینال را ترجیح می‌دهید؟ در اینجا چند بلوک سازنده برای تقلید از برخی رفتارهای این فرمتر با استفاده از ابزارهای رایج CLI آورده شده است.

لینوکس/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

آمادگی و بهداشت تولید

  • شناسایی کلیدهای تکراری تصادفی قبل از استقرار سرویس‌های حیاتی
  • نرمال‌سازی فاصله‌های سفید و خطوط جدید انتهای فایل برای جلوگیری از diffهای پرسر و صدا
  • استانداردسازی ساختار قبل از تولید `.env.example` یا قالب‌های secrets
# Production .env
NODE_ENV=production
API_URL=https://api.example.com
LOG_LEVEL=info

همکاری تیمی و ورود به تیم

  • کاهش نویز PR با اعمال طرح‌بندی استاندارد .env در تمام سرویس‌ها
  • کامیت کردن یک `.env.example` تمیز به جای secrets واقعی برای ایمن‌تر شدن ورود به تیم
  • کمک به اعضای جدید تیم برای مشاهده سریع تمام کلیدهای پیکربندی مورد نیاز
# .env.example
API_URL=
API_KEY=
DEBUG=false

CI و دروازه‌های کیفیت

  • افزودن بررسی برای اطمینان از عدم رسیدن کلیدهای تکراری به شاخه‌های `main` یا `master`
  • شکست buildها در صورت نقض قوانین پایه فرمت‌بندی یا نام‌گذاری فایل‌های `.env`
  • تمرکز بررسی‌های پیکربندی بر روی مقادیر و معناشناسی، نه جزئیات فاصله‌گذاری

❓ Frequently Asked Questions

کلیدهای تکراری چگونه مدیریت می‌شوند؟

اکثر لودرهای dotenv آخرین مقدار برای یک کلید مشخص را به عنوان مقدار مؤثر در نظر می‌گیرند. این فرمتر طراحی شده تا کلیدهای تکراری را به وضوح نشان دهد تا بتوانید تصمیم بگیرید کدام ورودی‌ها را نگه دارید به جای ارسال ساکت پیکربندی متضاد.

آیا نظرات و خطوط خالی حفظ می‌شوند؟

بله. خطوط نظرات کامل حفظ می‌شوند و خطوط خالی نگهداری می‌شوند تا گروه‌بندی منطقی شما خوانا باقی بماند. اگر طرح‌بندی فشرده‌تر یا متراکم‌تری ترجیح می‌دهید، همچنان می‌توانید فاصله بخش‌ها را به صورت دستی تنظیم کنید.

آیا ارجاعات ${VAR} گسترش داده می‌شوند؟

خیر. placeholders مانند `${DB_HOST}` به عنوان متن ساده رفتار می‌شوند. فرمتر ارجاعات محیطی را گسترش، اعتبارسنجی یا اجرا نمی‌کند، بنابراین شما کنترل کامل چگونگی مدیریت درهم‌آمیزی در زمان اجرا را دارید.

آیا چسباندن secrets واقعی ایمن است؟

فرمتر به گونه‌ای ساخته شده که داده‌ها را به صورت موقت در backend این ابزار پردازش کند بدون تماس با APIهای خارجی. با این حال، ایمن‌ترین روش اجتناب از چسباندن secrets تولید در هر ابزار مبتنی بر مرورگر است: فقط فایل‌های پاک‌شده `.env.example` را کامیت کنید و برای مقادیر واقعی به یک مدیر secrets اختصاصی یا مخزن secret در CI تکیه کنید.

در مورد مشکلات CRLF در مقابل LF و BOM چطور؟

خطوط جدید ناسازگار و BOMهای UTF-8 سرگردان اغلب باعث diffهای زشت و شگفتی‌های تجزیه می‌شوند. این فرمت‌کننده را با تنظیمات ویرایشگر خود جفت کنید (مثلاً همیشه با LF و بدون BOM ذخیره کنید) تا فایل‌های dotenv در سیستم‌عامل‌ها و IDEهای مختلف سازگار بمانند.

آیا این نحوه خواندن فایل env توسط برنامه من را تغییر می‌دهد؟

خیر. هدف حفظ معناشناسی در عین خوانایی آسان‌تر فایل است. کلیدها، مقادیر و نظرات از نظر عملکردی یکسان باقی می‌مانند، به شرطی که فایل dotenv اصلی برای لودر شما معتبر باشد.

Pro Tips

Security Tip

هرگز اسرار واقعی را به Git کامیت نکنید. یک `.env.example` با کلیدها و راهنمای امن کامیت کنید و مقادیر واقعی را از مخزن، ذخیره‌سازی مخفی CI یا جایگزین‌های محلی بارگذاری کنید.

Best Practice

کلیدها را بر اساس دامنه گروه‌بندی کنید (`APP_`, `DB_`, `NEXT_PUBLIC_` و غیره) و هر گروه را به طور یکنواخت مرتب نگه دارید تا بار شناختی خوانندگان جدید کاهش یابد.

Best Practice

یک سبک استاندارد .env را از طریق هوک‌های پیش‌کامیت یا بررسی‌های CI اعمال کنید تا هرگز مجبور نباشید در مورد فاصله‌گذاری در بررسی کد بحث کنید.

Best Practice

مقادیر حاوی فاصله، `#`، `=` یا کاراکترهای رزرو شده شل را نقل قول کنید تا از مشکلات تجزیه ظریف در پیاده‌سازی‌های مختلف dotenv جلوگیری کنید.

Additional Resources

Other Tools