الميزات الرئيسية
- تنسيق واعٍ لـ HCL2 للكتل والسمات والقوائم/الخرائط ووثائق الوراثة بنمط Terraform
- مسافات بادئة وتباعد متناسق حول = والفوارز والأقواس والكتل المتداخلة
- يحافظ على التعليقات والأسطر الفارغة المقصودة حيثما أمكن لتحسين قابلية القراءة
- يعمل مع ملفات .tf و .hcl و .tfvars القائمة على HCL وملفات Packer .pkr.hcl
- ناتج ثابت: تشغيل المنسق مرة أخرى يعطي نفس النتيجة
- مساحة سطحية دنيا: إجراء "تنسيق" واحد، بدون أزرار نمط للجدال حولها
- نسخ أو تنزيل النتيجة المنسقة من المحرر بنقرة واحدة
- معالجة مدعومة بالخادم عبر نقطة نهاية مؤمنة — رائع للإصلاحات السريعة؛ يُفضل استخدام CLI المحلي للكود شديد الحساسية
🔧 كيفية استخدام منسق HCL for hcl-formatter
1. الصق أو أسقط الكود الخاص بك
افتح ملف HCL/Terraform الخاص بك (.tf، .tfvars القائم على HCL، .hcl، .pkr.hcl، إلخ) والصق المحتويات في المحرر، أو أسقط الملف إذا كان متصفحك يدعم ذلك.
2. انقر على "تنسيق"
انقر على زر التنسيق. يتم إرسال التكوين الخاص بك إلى خلفية آمنة تطبق قواعد terraform fmt للنصوص، المسافات البادئة، والتباعد، ثم تعيد HCL2 المنسق.
3. راجع، انسخ أو حمّل
تحقق من النتيجة في المحرر، ثم انسخها مرة أخرى إلى بيئة التطوير المتكاملة الخاصة بك أو حمّل الملف المنسق وأضفه إلى مستودعك.
المواصفات الفنية
نموذج التنفيذ
المنسق مدعوم بخادم ومصمم لمحاكاة تطبيع تخطيط نمط terraform fmt لـ HCL2.
| الجانب | التفاصيل |
|---|---|
| الوضع | مدعوم بالخادم (بدون WASM في المتصفح) |
| النطاق | المسافات البيضاء، المسافة البادئة، التباعد، التخطيط الأساسي |
| إعادة الترتيب | لا يوجد إعادة ترتيب دلالي للموارد أو الكتل |
| الخيارات | لا شيء — إجراء تنسيق واحد لإخراج متوقع |
| الحدود | حوالي 1-2 ميجابايت للإدخال، ~25 ثانية مهلة للخادم (قابلة للتعديل) |
| الاحتفاظ | معالجة مؤقتة — يتم التخلص من الإدخال بعد التنسيق |
تغطية اللغة
يفهم تركيبات HCL2 الشائعة المستخدمة عبر Terraform وأدوات HashiCorp الأخرى.
| التركيب | أمثلة | ملاحظات |
|---|---|---|
| الكتل | resource, variable, output, module, locals, job, task | يتم الحفاظ على هيكل الكتل المتداخلة |
| السمات | name = "web", count = 2 | يتم توحيد التباعد حول = وبين السمات |
| المجموعات | [1, 2, 3], { key = value } | تخطيط موحد للقوائم والخرائط/الكائنات |
| وثائق الوراثة | <<-EOF ... EOF | تم الحفاظ على العلامات؛ تم تطبيع المسافات البادئة حيثما أمكن |
| التعليقات | تعليقات بنمط # و // | تم الاحتفاظ بها حيثما أمكن للحفاظ على النية والتوثيق |
قبل/بعد مصغر
مثال صغير لتنظيف المسافات البادئة والتباعد في مورد Terraform.
# قبل
resource "aws_s3_bucket" "b"{bucket="demo"
tags={Name="demo"}}
# بعد
resource "aws_s3_bucket" "b" {
bucket = "demo"
tags = {
Name = "demo"
}
}
الأخطاء والحالات الحدية
إذا فشل التنسيق أو أظهر خطأ، فعادة ما يكون ذلك بسبب مشاكل في تحليل إدخال HCL2.
| العَرَض | السبب المحتمل | ما يجب فحصه |
|---|---|---|
| لا يوجد مخرجات / خطأ في التحليل | قوس أو قوس معقوف أو قوس هلالي غير مغلق | عد أزواج { }، [ ]، ( ) المطابقة وأغلق جميع الكتل |
| مشاكل في وثائق الوراثة | محدد مفقود أو غير متطابق | تأكد من ظهور علامات مثل EOF تمامًا وفي سطرها الخاص |
| أنماط مختلطة | علامات تبويب/مسافات أو أحرف شاردة | طبيع المسافات البادئة، أزل أحرف التحكم الشاردة |
| ارتباك في ملفات .tfvars | JSON مقابل بناء جملة HCL | استخدم منسق JSON أو terraform fmt لملفات *.tfvars.json |
بدائل سطر الأوامر
لتدفقات عمل البنية التحتية ككود اليومية، استخدم المنظمات الرسمية محليًا وفي CI، واحتفظ بهذه الأداة عبر الإنترنت للتنظيفات السريعة المؤقتة.
macOS / Linux
Terraform: تنسيق في المكان
terraform fmtيعيد كتابة ملفات .tf وملفات .tfvars القائمة على HCL في الدليل الحالي.
Terraform: فحص متكرر لـ CI (بدون كتابة)
terraform fmt -check -recursiveيخرج برمز غير صفري إذا احتاج أي ملف إلى تنسيق - مثالي لـ CI وخطافات ما قبل الالتزام.
Packer: تنسيق القالب
packer fmt path/to/template.pkr.hclيُنسق ملف Packer HCL المحدد في مكانه.
ويندوز (PowerShell)
تنسيق جميع ملفات Terraform بشكل متكرر
Get-ChildItem -Recurse -Filter *.tf | ForEach-Object { terraform fmt $_.FullName }تشغيل terraform fmt على كل ملف .tf تم العثور عليه تحت المجلد الحالي.
فحص التنسيق بأسلوب CI
terraform fmt -check -recursiveاستخدم في خطوط أنابيب البناء للفشل عندما يكون التنسيق قديمًا.
إجراءات GitHub
فشل البناء إذا كان التنسيق مطلوبًا
steps:
- uses: hashicorp/setup-terraform@v3
- run: terraform fmt -check -recursiveإيقاف سير العمل عندما لا يكون أي ملف Terraform منسقًا بشكل صحيح.
التنسيق التلقائي في طلبات السحب (اختياري)
steps:
- run: terraform fmt -recursive
- run: git diff --quiet || (git config user.name "bot" && git config user.email "bot@example" && git commit -am "chore: terraform fmt" && git push)يطبق terraform fmt ويدفع commit للتنسيق فقط إلى الفرع.
التطبيقات العملية
نظافة طلبات السحب والمراجعات
توحيد المسافات البيضاء والمسافات البادئة حتى يتمكن المراجعون من التركيز على تغييرات البنية التحتية الفعلية.
- تشغيل التنسيق قبل فتح طلب سحب
- تقليل التعليقات المتعلقة بالأسلوب الدقيق في مراجعات Terraform
- الحفاظ على اختلافات git صغيرة وذات معنى
تطوير وحدات Terraform
الحفاظ على اتساق الوحدات عبر الفرق والمستودعات والسجلات.
- محاذاة كتل المتغيرات والمخرجات في الوحدات المشتركة
- ضمان تطابق تكوينات الأمثلة مع نمط منزلي واحد
حراسة CI
استخدم فحوصات terraform fmt في CI لمنع انحراف النمط مع مرور الوقت.
- إضافة `terraform fmt -check -recursive` كخطوة إلزامية في خط الأنابيب
- منع عمليات الدمج حتى يتم تنسيق جميع ملفات .tf
الإدماج والتوثيق
الأمثلة القابلة للقراءة تساعد أعضاء الفريق الجدد على تعلم كل من Terraform والنمط المنزلي بسرعة.
- نشر مقاطع منسقة بشكل متسق في ملفات README
- استخدام أمثلة نظيفة في جلسات تدريب Terraform الداخلية
❓ Frequently Asked Questions
🔒هل تتم معالجة الكود محليًا؟
🛡️هل يمكنني لصق الأسرار هنا؟
🧩هل يغير التنسيق سلوك التكوين؟
📄هل يمكنني تنسيق ملفات .tfvars؟
JSON عبر `.tfvars.json`؛ تتبع تلك قواعد JSON ويُفضل معالجتها بواسطة مُنسق JSON أو بواسطة `terraform fmt` نفسه.⚙️كيف يختلف هذا عن `terraform fmt`؟
🧯لماذا فشل التنسيق؟
JSON مع بناء جملة HCL. أصلح المشكلة الهيكلية (أو استخدم اللهجة/المنسق الصحيح) وحاول مرة أخرى.Pro Tips
فرض `terraform fmt -check -recursive` في CI لمنع انحراف التنسيق عبر مستودعات البنية التحتية الكبيرة.
تجنب لصق الأسرار أو البيانات المتعلقة بالحالة في الأدوات عبر الإنترنت؛ حافظ على أمثلة التكوين مُنظفة وشغّل منسقات CLI المحلية لشفرة البنية التحتية الحقيقية.
وحّد الأسطر الجديدة الزائدة والمسافات البادئة في محررك حتى تنتج ملفات Terraform فروقات نظيفة ومستقرة عبر المنصات.
أضف خطاف pre-commit يشغل `terraform fmt` حتى تصل طلبات السحب مُنسقة مسبقًا ويمكن للمحادثات المراجعة أن تبقى مركزة على الهندسة والمخاطر.
Additional Resources
Other Tools
- محسن CSS
- محسن HTML
- محسن Javascript
- محسن PHP
- منتقي الألوان
- مستخرج Sprite
- فك تشفير Base64
- تشفير Base64
- منسق Csharp
- منسق CSV
- Dockerfile Formatter
- منسق Elm
- منسق ENV
- منسق Go
- منسق Graphql
- منسق 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