إذا كان أحد المشاريع يحتاج إلى أداة تنسيق تعليمات برمجية مختلفة، فحدد هذا الاختيار على مستوى المشروع: استخدم ملف تهيئة ذلك المشروع، وإذا كنت تعمل في Visual Studio Code، فاستخدم إعدادات مساحة العمل الخاصة به. يؤدي ذلك إلى الحفاظ على إعدادات المستخدم الافتراضية في VS Code كما هي، مع جعل خيار التنسيق الخاص بالمشروع قابلاً للتكرار. تركز الخطوات أدناه على نظام التشغيل macOS وبرنامج VS Code؛ وقد تستخدم برامج التحرير الأخرى عناصر تحكم مختلفة.

تحديد ما تعنيه "أداة التنسيق" لهذا المشروع

حدد أولاً اللغة والحاجة الفعلية. تقوم أداة التنسيق بإعادة كتابة التعليمات البرمجية وفقاً لأسلوب معين؛ بينما قد يقتصر إعداد المحرر الأساسي على التحكم في المسافات البادئة، أو نهايات الأسطر، أو المسافات البيضاء. على سبيل المثال، يوفر EditorConfig خصائص نمط المشروع التي يمكن للمحررات المشاركة قراءتها، بينما يُعد Prettier أداة تنسيق لها تهيئة خاصة بالمشروع. يمكن لهذه الأدوات أن تكمل بعضها البعض، ولكن ملف EditorConfig بمفرده لا يحدد أداة تنسيق ولا يثبتها. يوضح EditorConfig تنسيقه ومكونات المحرر الإضافية؛ بينما يشرح دليل تهيئة Prettier كيف يقرأ ملفات التهيئة المدعومة.

تحقق من أداة التنسيق المستخدمة بالفعل في المشروع قبل إضافة أداة أخرى. راجع بيان الحزمة (package manifest)، وتهيئة أداة التنسيق، ووثائق المشروع. إذا كان زملاء الفريق أو عمليات الفحص الآلية يتوقعون أداة أو إصداراً معيناً، فإن مطابقة هذا الإعداد هو الخيار الأكثر عملية عادةً. قد يؤدي تثبيت أداة تنسيق منافسة أو تغيير خياراتها إلى إحداث فروقات (diffs) كبيرة حتى وإن كانت التعليمات البرمجية لا تزال تعمل.

اختيار مكان وضع الإعداد

في VS Code، تُطبق إعدادات المستخدم عبر استخدامك للمحرر بشكل عام، بينما تُطبق إعدادات مساحة العمل على المشروع المفتوح وتكون لها الأولوية على إعدادات المستخدم. يحتفظ VS Code بإعدادات مساحة العمل في مجلد .vscode في المسار الجذري للمشروع؛ بينما تُخزن إعدادات المستخدم بشكل منفصل في دليل دعم التطبيقات (application support) الخاص بحساب macOS الخاص بك. استخدم لوحة الأوامر (Command Palette) بالضغط على (⇧⌘P) واختر Preferences: Open Workspace Settings (JSON) لتعديل إعداد المشروع. تأكد من أن محرر الإعدادات يعرض Workspace قبل تغيير أي شيء. تشرح وثائق إعدادات VS Code النطاقات والمواقع.

لاختيار أداة تنسيق للغة معينة فقط في هذا المشروع، أضف إدخال أداة التنسيق الافتراضية الخاصة بتلك اللغة إلى إعدادات مساحة العمل. على سبيل المثال، إذا كان المشروع يستخدم إضافة Prettier في VS Code للغة JavaScript، فسيكون الإعداد بهذا الشكل:

{
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  }
}

استخدم معرّف الإضافة لأداة التنسيق المثبتة بالفعل في المحرر الخاص بك؛ فالمثال لا يمثل معرّفاً عاماً. إذا كان المشروع يتضمن لغات متعددة، فأضف إدخالاً لكل لغة ذات صلة بدلاً من تعيين إعداد افتراضي عام. يتيح لك أمر Format Document With... في VS Code الاختيار من بين أدوات التنسيق المتاحة للمستند الحالي، ويمكن تشغيل إجراءات التنسيق الخاصة به من لوحة الأوامر. يوثق دليل التنسيق في VS Code عناصر التحكم هذه. تجنب تمكين التنسيق عند الحفظ (format-on-save) كجزء من هذا التغيير المحدود ما لم تكن تريد أن يؤدي كل حفظ في ذلك المشروع إلى تشغيل عملية التنسيق.

الاحتفاظ بقواعد أداة التنسيق مع المشروع

تحدد أداة التنسيق الافتراضية أداة معينة، لكنها لا تحدد جميع قواعد التنسيق لتلك الأداة. خزّن القواعد المشتركة في ملف تهيئة تتعرف عليه أداة التنسيق المختارة. بالنسبة لـ Prettier، قد يكون ذلك ملف .prettierrc.json في المسار الجذري للمشروع. قد يحدد نموذج بسيط الخيارات التي وافق المشروع على استخدامها فقط:

{
  "singleQuote": true
}

يبحث Prettier عن التهيئة بدءاً من الملف الذي يتم تنسيقه صعوداً عبر المجلدات الرئيسية (parent directories)، لذلك يمكن لملف التهيئة على مستوى الجذر أن يخدم الملفات الواقعة أسفله. كما أنه يدعم العديد من تنسيقات التهيئة الأخرى؛ اختر تنسيقاً يدعمه إصدار المشروع والأدوات الحالية. تسرد وثائق تهيئة Prettier الملفات المدعومة وسلوك الاستكشاف وحل المسارات.

إذا كان الهدف هو فقط توحيد المسافات البادئة أو نهايات الأسطر عبر مختلف المحررات، ففكر في استخدام ملف .editorconfig في الجذر بدلاً من ذلك. على سبيل المثال، يوقف root = true البحث عن ملفات EditorConfig الأبعد، ويمكن لخصائص مثل indent_style وindent_size وend_of_line تحديد الأعراف النصية الأساسية. يختلف دعم المحرر حسب المكون الإضافي، ولا تحل هذه الخصائص محل قواعد التنسيق التي تدرك طبيعة اللغة البرمجية. تصف مواصفات ونظرة عامة على EditorConfig كيفية العثور على الملفات وكيفية تطبيق القواعد المطابقة.

التحقق من النطاق قبل البدء بالتنسيق

احفظ إعداد مساحة العمل والتهيئة، ثم أعد فتح مجلد المشروع في VS Code إذا لزم الأمر. افتح ملفاً نموذجياً واحداً واستخدم Format Document With... لتأكيد أداة التنسيق المحددة. إذا لم تكن أداة التنسيق مدرجة، فتحقق من تثبيت إضافتها ودعمها لتلك اللغة؛ إذ لا يمكن لإعداد مساحة العمل تثبيت إضافة أو إضافة دعم لأداة التنسيق بمفرده.

قبل تطبيق التنسيق على نطاق واسع، افحص الملفات المتأثرة في التحكم بالمصدر (Source Control) أو في عرض الفروقات (diff view). قم بتنسيق مجموعة تمثيلية صغيرة أولاً، خاصة إذا كان المشروع يحتوي على قواعد نمط حالية أو ملفات يتم إنشاؤها تلقائياً. إذا كانت النتيجة غير متوقعة، فتوقف وتحقق من وجود تهيئة متعارضة في دليل رئيسي، أو إعداد خاص باللغة، أو أداة تنسيق أخرى يتوقعها المشروع بالفعل. تراجع عن أي تغيير تنسيق غير مرغوب فيه من خلال أدوات التحكم في المصدر بالمحرر، ثم عدّل تهيئة المشروع وكرر العملية على مجموعة صغيرة.

يحافظ هذا على ارتباط القرار بالمشروع: تظل إعدادات المستخدم الافتراضية في VS Code في نطاقها المنفصل، بينما يمكن للمشروع أن يحمل تحديد أداة التنسيق وقواعدها الخاصة به. وإذا قمت بتبديل المحررات، فلن ينتقل إعداد مساحة العمل معك، لذا اعتمد على تهيئة المشروع لأداة التنسيق عندما يدعم ذلك المحرر تلك الميزة.

المصادر