أطلق العنان لقوة VS Code بتعلم كيفية بناء ملحقات مخصصة. يقدم هذا الدليل شرحًا كاملًا، من الإعداد إلى النشر، لتمكينك من تحسين بيئة الترميز الخاصة بك ومشاركة إبداعاتك مع العالم.
إتقان تطوير ملحقات VS Code: دليل شامل للمطورين العالميين
أصبح Visual Studio Code (VS Code) محرر الأكواد المفضل لملايين المطورين حول العالم. تنبع شعبيته من طبيعته خفيفة الوزن، وميزاته القوية، والأهم من ذلك، قابليته للتوسيع. تتيح القدرة على إنشاء ملحقات مخصصة للمطورين تكييف المحرر لاحتياجاتهم الخاصة، مما يعزز الإنتاجية ويبسط سير العمل. سيرشدك هذا الدليل الشامل خلال عملية إنشاء ملحقات VS Code الخاصة بك، من الإعداد الأولي إلى نشر إبداعك ليستخدمه العالم بأسره.
لماذا تطور ملحقات VS Code؟
يوفر تطوير ملحقات VS Code العديد من الفوائد، سواء للمطورين الأفراد أو للمؤسسات:
- سير عمل مخصص: قم بتخصيص المحرر ليتناسب تمامًا مع أسلوب الترميز الخاص بك ومتطلبات مشروعك.
- زيادة الإنتاجية: أتمتة المهام المتكررة، والتكامل مع الأدوات الخارجية، وتبسيط عملية التطوير الخاصة بك.
- تعزيز التعاون: شارك الملحقات مع فريقك أو المجتمع الأوسع لتوحيد سير العمل وتحسين جودة الكود.
- التعلم وتطوير المهارات: اكتساب الخبرة مع TypeScript و Node.js وواجهة برمجة تطبيقات VS Code يفتح فرصًا وظيفية جديدة.
- المساهمة في المجتمع: شارك حلولك المبتكرة مع مجتمع المطورين العالمي وساهم في النظام البيئي.
المتطلبات الأساسية
قبل الغوص في تطوير الملحقات، تأكد من تثبيت ما يلي:
- Node.js و npm (مدير حزم Node): يعتمد تطوير ملحقات VS Code بشكل كبير على Node.js. قم بتنزيل وتثبيت أحدث إصدار LTS من موقع Node.js الرسمي. يتم تثبيت npm تلقائيًا مع Node.js.
- Visual Studio Code: تأكد من تثبيت أحدث إصدار من VS Code.
- Yeoman ومولد ملحقات VS Code: Yeoman هي أداة هيكلة تبسط عملية إنشاء الملحقات. قم بتثبيتها عالميًا باستخدام npm:
npm install -g yo generator-code
إعداد بيئة التطوير الخاصة بك
مع توفر المتطلبات الأساسية، أنت جاهز لإعداد بيئة التطوير الخاصة بك:
- إنشاء مشروع ملحق جديد: افتح الطرفية (terminal) وقم بتشغيل الأمر التالي لبدء مولد الملحقات:
- أجب على الأسئلة المطروحة: سيطرح المولد سلسلة من الأسئلة حول ملحقك. إليك تفصيل للأسئلة الشائعة والإجابات الموصى بها:
- ما نوع الملحق الذي تريد إنشاءه؟ اختر "New Extension (TypeScript)" لملحق قائم على TypeScript، وهو النهج الموصى به.
- ما اسم ملحقك؟ اختر اسمًا وصفيًا وفريدًا لملحقك. أمثلة: "Code Spell Checker"، "JavaScript Snippets"، "Python Autocomplete".
- ما هو مُعرّف ملحقك؟ هذا مُعرّف فريد لملحقك، عادة ما يكون بالتنسيق `publisher.extension-name`. اختر اسم ناشر (على سبيل المثال، اسم مستخدم GitHub الخاص بك أو اسم شركتك).
- ما هو وصف ملحقك؟ قدم وصفًا موجزًا ومفيدًا لما يفعله ملحقك.
- هل تريد تهيئة مستودع git؟ اختر "Yes" لتهيئة مستودع Git للتحكم في الإصدار.
- هل تريد استخدام eslint لفحص الكود؟ اختر "Yes" لفرض تناسق نمط الكود.
- افتح المشروع في VS Code: بمجرد انتهاء المولد، افتح مجلد المشروع الذي تم إنشاؤه حديثًا في VS Code.
yo code
فهم بنية المشروع
ينشئ مولد الملحقات بنية مشروع أساسية بالملفات الرئيسية التالية:
- `package.json`: يحتوي هذا الملف على بيانات وصفية حول ملحقك، بما في ذلك اسمه وإصداره ووصفه والتبعيات وأحداث التنشيط.
- `tsconfig.json`: يقوم هذا الملف بتكوين مترجم TypeScript.
- `.vscode/launch.json`: يقوم هذا الملف بتكوين مصحح الأخطاء لملحقك.
- `src/extension.ts`: هذه هي نقطة الدخول الرئيسية لملحقك. تحتوي على دالتي `activate` و `deactivate`.
- `README.md`: ملف markdown يقدم وصفًا لملحقك، وكيفية استخدامه، وأي معلومات ذات صلة.
كتابة أول ملحق لك
لنبدأ بإنشاء ملحق بسيط يعرض رسالة "Hello World" عند تنفيذ أمر ما:
- افتح `src/extension.ts`: يحتوي هذا الملف على دالة `activate`، والتي يتم استدعاؤها عند تنشيط ملحقك.
- عدّل دالة `activate`: استبدل الكود الحالي بما يلي:
- الشرح:
- `vscode.commands.registerCommand('my-extension.helloWorld', ...)`: يسجل أمرًا بالمعرف `my-extension.helloWorld`. سيكون هذا الأمر متاحًا في لوحة أوامر VS Code.
- `vscode.window.showInformationMessage('Hello World from My Extension!')`: يعرض رسالة معلومات في نافذة VS Code.
- `context.subscriptions.push(disposable)`: يضيف الأمر إلى اشتراكات الملحق، مما يضمن التخلص منه بشكل صحيح عند إلغاء تنشيط الملحق.
- عدّل `package.json`: أضف ما يلي إلى قسم `contributes` لتعريف الأمر:
- الشرح:
- `"commands"`: يحدد الأوامر التي يساهم بها ملحقك.
- `"command": "my-extension.helloWorld"`: يحدد معرف الأمر الذي يطابق المعرف المستخدم في `extension.ts`.
- `"title": "Hello World"`: يحدد اسم العرض للأمر في لوحة الأوامر.
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
console.log('Congratulations, your extension \"my-extension\" is now active!');
let disposable = vscode.commands.registerCommand('my-extension.helloWorld', () => {
vscode.window.showInformationMessage('Hello World from My Extension!');
});
context.subscriptions.push(disposable);
}
export function deactivate() {}
"contributes": {
"commands": [{
"command": "my-extension.helloWorld",
"title": "Hello World"
}]
}
اختبار الملحق الخاص بك
حان الوقت الآن لاختبار ملحقك:
- اضغط على F5: سيؤدي هذا إلى تشغيل نافذة VS Code جديدة مع تثبيت ملحقك. هذه هي "مضيف تطوير الملحقات" (Extension Development Host).
- افتح لوحة الأوامر: اضغط على `Ctrl+Shift+P` (أو `Cmd+Shift+P` على macOS) لفتح لوحة الأوامر.
- اكتب "Hello World": يجب أن ترى أمرك مدرجًا في لوحة الأوامر.
- اختر "Hello World": سيؤدي النقر فوق الأمر إلى تنفيذه وعرض رسالة "Hello World" في نافذة VS Code.
تصحيح أخطاء الملحق الخاص بك
تصحيح الأخطاء أمر بالغ الأهمية لتحديد وإصلاح المشكلات في ملحقك. يوفر VS Code دعمًا ممتازًا لتصحيح الأخطاء:
- ضع نقاط التوقف (Breakpoints): انقر في هامش المحرر بجوار أرقام الأسطر لوضع نقاط توقف في الكود الخاص بك.
- اضغط على F5: سيؤدي هذا إلى تشغيل مضيف تطوير الملحقات في وضع تصحيح الأخطاء.
- شغّل ملحقك: نفذ الأمر أو الإجراء الذي يشغل الكود الذي تريد تصحيح أخطائه.
- افحص المتغيرات ومكدس الاستدعاءات: سيوقف مصحح أخطاء VS Code التنفيذ عند نقاط التوقف الخاصة بك، مما يسمح لك بفحص المتغيرات، والتنقل خطوة بخطوة في الكود، وفحص مكدس الاستدعاءات (call stack).
العمل مع واجهة برمجة تطبيقات VS Code (API)
توفر واجهة برمجة تطبيقات VS Code مجموعة غنية من الواجهات والدوال للتفاعل مع المحرر. إليك بعض المجالات الرئيسية للواجهة:
- `vscode.window`: للتفاعل مع نافذة VS Code، وعرض الرسائل، وإظهار مربعات الإدخال، وإدارة اللوحات.
- `vscode.workspace`: للوصول إلى مساحة العمل والتلاعب بها، بما في ذلك الملفات والمجلدات وإعدادات التكوين.
- `vscode.commands`: لتسجيل وتنفيذ الأوامر.
- `vscode.languages`: لتوفير دعم اللغة، مثل تمييز الصيغة، وإكمال الكود، والتشخيصات.
- `vscode.debug`: للتفاعل مع مصحح الأخطاء.
- `vscode.scm`: للتفاعل مع أنظمة إدارة التحكم بالمصادر مثل Git.
مثال: إنشاء ملحق قصاصات برمجية (Snippet)
دعنا ننشئ ملحقًا يضيف قصاصة برمجية لإنشاء مكون React أساسي:
- أنشئ مجلد `snippets`: أنشئ مجلدًا جديدًا باسم `snippets` في جذر مشروعك.
- أنشئ ملف قصاصة: أنشئ ملفًا باسم `react.json` داخل مجلد `snippets`.
- أضف تعريف القصاصة: أضف JSON التالي إلى `react.json`:
- الشرح:
- `"React Component"`: اسم القصاصة.
- `"prefix": "reactcomp"`: البادئة التي تشغل القصاصة. كتابة `reactcomp` والضغط على `Tab` ستدرج القصاصة.
- `"body"`: مصفوفة من السلاسل النصية تمثل أسطر الكود في القصاصة.
- `${1:ComponentName}`: نقطة توقف (tab stop) تسمح لك بتغيير اسم المكون بسرعة.
- `"description"`: وصف للقصاصة.
- عدّل `package.json`: أضف ما يلي إلى قسم `contributes`:
- الشرح:
- `"snippets"`: يحدد القصاصات التي يساهم بها ملحقك.
- `"language": "javascriptreact"`: يحدد اللغة التي تنطبق عليها القصاصة.
- `"path": "./snippets/react.json"`: يحدد المسار إلى ملف القصاصة.
- اختبر قصاصتك: افتح ملف `.jsx` أو `.tsx` واكتب `reactcomp`. اضغط `Tab` لإدراج القصاصة.
{
"React Component": {
"prefix": "reactcomp",
"body": [
"import React from 'react';",
"",
"interface Props {\n\t[key: string]: any;\n}",
"",
"const ${1:ComponentName}: React.FC = (props: Props) => {\n\treturn (\n\t\t\n\t\t\t${2:Content}\n\t\t\n\t);\n};",
"",
"export default ${1:ComponentName};"
],
"description": "Creates a basic React component"
}
}
"contributes": {
"snippets": [{
"language": "javascriptreact",
"path": "./snippets/react.json"
}]
}
تقنيات تطوير الملحقات المتقدمة
بمجرد إتقان الأساسيات، يمكنك استكشاف تقنيات تطوير الملحقات الأكثر تقدمًا:
- بروتوكول خادم اللغة (LSP): استخدم LSP لتوفير دعم لغوي متقدم، مثل إكمال الكود والتشخيصات وإعادة البناء، للغة معينة. تشمل تطبيقات LSP الشائعة تلك الخاصة بـ Python و Java و Go.
- محولات تصحيح الأخطاء (Debugging Adapters): أنشئ محولات تصحيح أخطاء مخصصة لدعم تصحيح أخطاء لغات برمجة أو بيئات تشغيل معينة.
- Webviews: قم بتضمين واجهات مستخدم تفاعلية قائمة على الويب داخل VS Code باستخدام webviews. يتيح لك هذا إنشاء ملحقات معقدة وجذابة بصريًا.
- السمات (Theming): أنشئ سمات مخصصة لتغيير مظهر VS Code. تتوفر العديد من السمات الشائعة في سوق VS Code.
- روابط المفاتيح (Keybindings): حدد روابط مفاتيح مخصصة لربط إجراءات معينة باختصارات لوحة المفاتيح.
التدويل والترجمة (i18n and L10n)
للوصول إلى جمهور عالمي، فكر في تدويل وترجمة ملحقك. يتضمن ذلك تكييف ملحقك لدعم لغات ومناطق مختلفة.
- إخراج السلاسل النصية: انقل جميع السلاسل النصية الموجهة للمستخدم إلى ملفات موارد منفصلة.
- استخدم واجهة برمجة تطبيقات i18n الخاصة بـ VS Code: يوفر VS Code واجهة برمجة تطبيقات لتحميل السلاسل النصية المترجمة بناءً على لغة المستخدم.
- دعم لغات متعددة: وفر ملفات موارد للغات مختلفة.
- ضع في اعتبارك التخطيط من اليمين إلى اليسار (RTL): إذا كان ملحقك يعرض نصًا، فتأكد من أنه يدعم لغات RTL مثل العربية والعبرية.
نشر الملحق الخاص بك
بمجرد أن يصبح ملحقك جاهزًا، يمكنك نشره في سوق VS Code (Marketplace) ليستخدمه الآخرون:
- أنشئ منظمة Azure DevOps: ستحتاج إلى منظمة Azure DevOps لنشر ملحقك. إذا لم يكن لديك واحدة، فأنشئ حسابًا مجانيًا على موقع Azure DevOps.
- ثبّت أداة `vsce`: مدير ملحقات VS Code (`vsce`) هو أداة سطر أوامر لتغليف ونشر الملحقات. قم بتثبيته عالميًا باستخدام npm:
- أنشئ ناشرًا (Publisher): الناشر هو هوية تمتلك ملحقاتك في السوق. أنشئ ناشرًا باستخدام الأمر `vsce create-publisher`. ستحتاج إلى توفير اسم ناشر ورمز وصول شخصي (PAT) من Azure DevOps.
- أنشئ رمز وصول شخصي (PAT): في Azure DevOps، انتقل إلى "User Settings" -> "Personal Access Tokens" وأنشئ PAT جديدًا بنطاق "Marketplace (Publish)".
- غلف ملحقك: استخدم الأمر `vsce package` لتغليف ملحقك في ملف `.vsix`.
- انشر ملحقك: استخدم الأمر `vsce publish` لنشر ملحقك في السوق. ستحتاج إلى توفير اسم الناشر الخاص بك و PAT الخاص بك.
npm install -g vsce
أفضل الممارسات لتطوير الملحقات
اتبع هذه الممارسات الأفضل لإنشاء ملحقات VS Code عالية الجودة وقابلة للصيانة:
- استخدم TypeScript: يوفر TypeScript كتابة ثابتة ويحسن قابلية صيانة الكود.
- اكتب اختبارات الوحدة (Unit Tests): اكتب اختبارات الوحدة للتأكد من أن ملحقك يعمل بشكل صحيح.
- استخدم مدقق الكود (Linter): استخدم مدقق كود مثل ESLint لفرض تناسق نمط الكود.
- وثّق الكود الخاص بك: اكتب وثائق واضحة وموجزة لملحقك.
- تعامل مع الأخطاء بأمان: نفذ معالجة أخطاء مناسبة لمنع تعطل ملحقك.
- حسن الأداء: حسن أداء ملحقك لتجنب إبطاء VS Code.
- اتبع إرشادات واجهة برمجة تطبيقات VS Code: التزم بإرشادات واجهة برمجة تطبيقات VS Code لضمان تكامل ملحقك جيدًا مع المحرر.
- ضع في اعتبارك إمكانية الوصول: اجعل ملحقك متاحًا للمستخدمين من ذوي الإعاقة.
موارد المجتمع
إليك بعض الموارد القيمة لمعرفة المزيد عن تطوير ملحقات VS Code:
- وثائق واجهة برمجة تطبيقات ملحقات VS Code: الوثائق الرسمية لواجهة برمجة تطبيقات ملحقات VS Code.
- عينات ملحقات VS Code: مجموعة من الملحقات النموذجية التي توضح ميزات مختلفة للواجهة.
- سوق VS Code: تصفح سوق VS Code للعثور على ملحقات موجودة والتعلم من أكوادها.
- Stack Overflow: اطرح الأسئلة وابحث عن إجابات متعلقة بتطوير ملحقات VS Code.
- GitHub: استكشف ملحقات VS Code مفتوحة المصدر وساهم في المجتمع.
الخاتمة
يعد تطوير ملحقات VS Code طريقة قوية لتخصيص بيئة الترميز الخاصة بك، وزيادة الإنتاجية، ومشاركة حلولك مع مجتمع المطورين العالمي. باتباع هذا الدليل الشامل، يمكنك إتقان فن تطوير الملحقات وإنشاء أدوات مبتكرة تعزز تجربة VS Code لنفسك وللآخرين. تذكر أن تتبنى المجتمع، وتساهم في المشاريع مفتوحة المصدر، وتتعلم وتستكشف باستمرار عالم تطوير ملحقات VS Code المتطور باستمرار. حظًا موفقًا وترميزًا سعيدًا!