لتشغيل أمر المشروع نفسه من VS Code على جهاز Mac الخاص بك، حدده كمهمة مساحة عمل في .vscode/tasks.json. ثم قم بتشغيله من Command Palette أو قائمة Terminal بدلاً من إعادة كتابته في وحدة طرفية. يستخدم هذا الدليل npm test كمثال؛ استبدله بأمر يدعمه مشروعك بالفعل. تتطلب مهام VS Code مجلد مساحة عمل مفتوحًا، لذا افتح مجلد المشروع أولاً في VS Code. Visual Studio Code: Integrate with External Tools via Tasks

إنشاء ملف المهام في مشروعك

في VS Code، افتح Command Palette باستخدام Shift+Command+P، وشغّل Tasks: Configure Task، واختر Create tasks.json file from template إذا أتاح VS Code هذا الخيار. حدد Others لإنشاء مهمة مخصصة. إذا كان tasks.json موجودًا بالفعل، فافتحه وعدّله بدلاً من إنشاء ملف ثانٍ. ينتمي الملف إلى مجلد .vscode الخاص بالمشروع؛ ويؤدي تضمينه (commit) مع مشروعك إلى إتاحة المهمة للمتعاونين الذين يستخدمون VS Code. Visual Studio Code: Integrate with External Tools via Tasks

على سبيل المثال، ضع هذا التكوين في .vscode/tasks.json:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Run project tests",
      "type": "shell",
      "command": "npm",
      "args": ["test"],
      "options": {
        "cwd": "${workspaceFolder}"
      },
      "presentation": {
        "reveal": "always",
        "panel": "dedicated"
      }
    }
  ]
}

تسمية المهمة (task label) هي الاسم الذي ستختاره في VS Code. هنا، يعبّر command و args عن المثال كملف تنفيذي npm متبوعًا بالوسيطة test الخاصة به. قم بتغيير هذه العناصر لمطابقة أمر مشروعك الحالي: على سبيل المثال، أداة سطر أوامر ووسائطها، أو برنامج نصي (script) موجود بالفعل. لا تقوم المهمة بتثبيت التبعيات، أو إنشاء برنامج نصي للمشروع، أو تحديد ما ينبغي للأمر تنفيذه. تحقق من وثائق المشروع أو البرامج النصية الخاصة به أولاً. يحدد cwd دليل العمل ليكون المجلد المفتوح كمساحة عمل؛ وهذا الأمر مهم عندما يتوقع الأمر العثور على ملفات المشروع بالنسبة إلى ذلك المجلد. Visual Studio Code: Integrate with External Tools via Tasks

تشغيلها مرة أخرى من واجهة Mac

احفظ tasks.json. افتح Command Palette باستخدام Shift+Command+P، وشغّل Tasks: Run Task، وحدد Run project tests. يمكنك أيضًا استخدام Terminal > Run Task. بعد انتهاء المهمة، كرر هذه الخطوات وحدد التسمية نفسها. تعمل المهمة المكونة في الوحدة الطرفية المدمجة في VS Code. Visual Studio Code: Integrate with External Tools via Tasks

في المثال، يؤدي الخيار reveal: always إلى إظهار لوحة الوحدة الطرفية في المقدمة عند تشغيل المهمة. ويعيد الخيار panel: dedicated استخدام وحدة طرفية لهذه المهمة في عمليات التشغيل اللاحقة، مما يحافظ على فصل مخرجاتها عن المهام الأخرى. لإبقاء المخرجات في الخلفية، اضبط reveal على never؛ وستحتاج إلى جلب لوحة الوحدة الطرفية إلى المقدمة بنفسك لمعاينتها. تؤثر هذه الخيارات على طريقة العرض، وليس على سلوك الأمر أو نجاحه. Visual Studio Code: Integrate with External Tools via Tasks

مطابقة التكوين مع كيفية تشغيل أمرك

استخدم type: shell عندما يعتمد الأمر على سلوك shell. بالنسبة للأمر الذي يجب أن يشغّل ملفًا تنفيذيًا مباشرةً، يمكن أن يؤدي استخدام type: process إلى تجنب معالجة shell للأمر وتفسيره. يوثق VS Code كلا النوعين من المهام؛ اختر النوع المناسب وفقًا للأمر والوسائط التي تحتاجها. مع مهام shell، قد تتطلب المسافات والأحرف الخاصة وضعها بين علامات اقتباس. يساعد فصل الملف التنفيذي والوسائط كما هو موضح في المثال على تجنب تضمين سطر الأوامر بأكمله في سلسلة نصية واحدة، على الرغم من أن قواعد الاقتباس الخاصة بـ shell لا تزال سارية عند الحاجة. Visual Studio Code: Integrate with External Tools via Tasks

إذا كان يجب أن يبدأ الأمر في مجلد فرعي، فقم بتغيير cwd إلى مسار تحت ${workspaceFolder}، مثل ${workspaceFolder}/client. يشير ${workspaceFolder} إلى المجلد المفتوح في VS Code، وتستخدم مسارات macOS الشرطات المائلة للأمام (forward slashes). إذا استخدمت متغيرًا في مهمة shell، فتذكر أن الاستبدال لا يضيف علامات الاقتباس تلقائيًا؛ قد تحتاج المسارات التي تحتوي على مسافات إلى وضع علامات اقتباس مناسبة لـ shell. Visual Studio Code: Variables Reference

إذا كانت المهمة تعمل في نافذة Terminal ولكنها تفشل في VS Code، فتحقق من أن الملف التنفيذي متاح للبيئة التي يستخدمها VS Code ومن أن دليل العمل المحدد يحتوي على الملفات المتوقعة. يتيح VS Code تكوين automation shell بشكل منفصل عبر terminal.integrated.automationProfile.*، أو shell مخصص لمهمة معينة عبر options.shell؛ لا تضمن المهمة نفس بيئة الوحدة الطرفية التفاعلية المفتوحة بالفعل. Visual Studio Code: Integrate with External Tools via Tasks

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

المصادر