با یادگیری ساخت افزونههای سفارشی، قدرت VS Code را آزاد کنید. این راهنما یک آموزش کامل، از راهاندازی تا انتشار، ارائه میدهد.
تسلط بر توسعه افزونه VS Code: راهنمای جامع برای توسعهدهندگان جهانی
Visual Studio Code (VS Code) به ویرایشگر کد مورد علاقه میلیونها توسعهدهنده در سراسر جهان تبدیل شده است. محبوبیت آن ناشی از ماهیت سبک، ویژگیهای قدرتمند و مهمتر از همه، قابلیت توسعهپذیری آن است. توانایی ایجاد افزونههای سفارشی به توسعهدهندگان این امکان را میدهد تا ویرایشگر را مطابق با نیازهای خاص خود تنظیم کنند، بهرهوری را افزایش دهند و گردش کارهای خود را ساده کنند. این راهنمای جامع شما را در فرآیند ایجاد افزونههای VS Code خود، از راهاندازی اولیه تا انتشار محصول خود برای استفاده در سراسر جهان، راهنمایی میکند.
چرا افزونههای VS Code را توسعه دهیم؟
توسعه افزونههای VS Code مزایای متعددی را هم برای توسعهدهندگان انفرادی و هم برای سازمانها ارائه میدهد:
- گردش کار شخصیسازی شده: ویرایشگر را به طور کامل مطابق با سبک کدنویسی و الزامات پروژه خود تنظیم کنید.
- افزایش بهرهوری: کارهای تکراری را خودکار کنید، با ابزارهای خارجی ادغام شوید و فرآیند توسعه خود را ساده کنید.
- همکاری پیشرفته: افزونهها را با تیم خود یا جامعه وسیعتر به اشتراک بگذارید تا گردش کار را استاندارد کرده و کیفیت کد را بهبود بخشید.
- یادگیری و توسعه مهارت: کسب تجربه با TypeScript، Node.js و VS Code API فرصتهای شغلی جدیدی را ایجاد میکند.
- مشارکت در جامعه: راهحلهای نوآورانه خود را با جامعه جهانی توسعهدهندگان به اشتراک بگذارید و به اکوسیستم کمک کنید.
پیشنیازها
قبل از ورود به توسعه افزونه، اطمینان حاصل کنید که موارد زیر را نصب کردهاید:
- Node.js و npm (مدیر بسته Node): توسعه افزونه VS Code به شدت به Node.js متکی است. آخرین نسخه LTS را از وبسایت رسمی Node.js بارگیری و نصب کنید. npm به طور خودکار با Node.js نصب میشود.
- Visual Studio Code: اطمینان حاصل کنید که آخرین نسخه VS Code را نصب کردهاید.
- Yeoman و VS Code Extension Generator: Yeoman یک ابزار داربستبندی است که فرآیند ایجاد افزونه را ساده میکند. آن را با استفاده از npm به صورت سراسری نصب کنید:
npm install -g yo generator-code
راهاندازی محیط توسعه
با وجود پیشنیازها، شما آمادهاید تا محیط توسعه خود را راهاندازی کنید:
- ایجاد یک پروژه افزونه جدید: ترمینال خود را باز کنید و دستور زیر را برای راهاندازی تولیدکننده افزونه اجرا کنید:
- به سوالات پاسخ دهید: تولیدکننده مجموعهای از سوالات را در مورد افزونه شما میپرسد. در اینجا خلاصهای از سوالات رایج و پاسخهای پیشنهادی آورده شده است:
- چه نوع افزونهای میخواهید ایجاد کنید؟ برای یک افزونه مبتنی بر TypeScript، که رویکرد توصیهشده است، «افزونه جدید (TypeScript)» را انتخاب کنید.
- نام افزونه شما چیست؟ یک نام توصیفی و منحصر به فرد برای افزونه خود انتخاب کنید. نمونهها: «Code Spell Checker»، «JavaScript Snippets»، «Python Autocomplete».
- شناسه افزونه شما چیست؟ این یک شناسه منحصر به فرد برای افزونه شما است، معمولاً با قالب `publisher.extension-name`. یک نام ناشر (به عنوان مثال، نام کاربری GitHub یا نام شرکت خود) انتخاب کنید.
- توضیحات افزونه شما چیست؟ یک توضیح مختصر و آموزنده از کاری که افزونه شما انجام میدهد، ارائه دهید.
- آیا میخواهید یک مخزن git را راهاندازی کنید؟ «بله» را برای راهاندازی یک مخزن Git برای کنترل نسخه انتخاب کنید.
- آیا میخواهید از eslint برای بازبینی کد استفاده کنید؟ «بله» را برای اعمال سازگاری سبک کد انتخاب کنید.
- پروژه را در 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('سلام دنیا از افزونه من!')`: یک پیام اطلاعاتی در پنجره 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('تبریک میگوییم، افزونه شما \"my-extension\" اکنون فعال است!');
let disposable = vscode.commands.registerCommand('my-extension.helloWorld', () => {
vscode.window.showInformationMessage('سلام دنیا از افزونه من!');
});
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 پشتیبانی اشکالزدایی عالی را ارائه میدهد:
- تنظیم نقاط شکست: در حاشیه ویرایشگر در کنار شماره خطوط کلیک کنید تا نقاط شکست را در کد خود تنظیم کنید.
- F5 را فشار دهید: این Extension Development Host را در حالت اشکالزدایی راهاندازی میکند.
- افزونه خود را راهاندازی کنید: دستور یا اقدامی را اجرا کنید که کدی را که میخواهید اشکالزدایی کنید، راهاندازی میکند.
- متغیرها و پشته تماس را بررسی کنید: اشکالزدای VS Code اجرا را در نقاط شکست شما متوقف میکند و به شما امکان میدهد متغیرها را بررسی کنید، کد را گام به گام طی کنید و پشته تماس را بررسی کنید.
کار با VS Code API
VS Code API مجموعهای غنی از رابطها و توابع را برای تعامل با ویرایشگر ارائه میدهد. در اینجا برخی از زمینههای کلیدی API آورده شده است:
- `vscode.window`: برای تعامل با پنجره VS Code، نمایش پیامها، نشان دادن کادرهای ورودی و مدیریت پنلها.
- `vscode.workspace`: برای دسترسی و دستکاری فضای کاری، از جمله فایلها، پوشهها و تنظیمات پیکربندی.
- `vscode.commands`: برای ثبت و اجرای دستورات.
- `vscode.languages`: برای ارائه پشتیبانی از زبان، مانند برجستهسازی نحو، تکمیل کد و تشخیص.
- `vscode.debug`: برای تعامل با اشکالزدا.
- `vscode.scm`: برای تعامل با سیستمهای مدیریت کنترل منبع مانند Git.
مثال: ایجاد یک افزونه قطعه کد
بیایید یک افزونه ایجاد کنیم که یک قطعه کد برای ایجاد یک کامپوننت React اساسی اضافه میکند:
- یک پوشه `snippets` ایجاد کنید: یک پوشه جدید به نام `snippets` در ریشه پروژه خود ایجاد کنید.
- یک فایل قطعه کد ایجاد کنید: یک فایل به نام `react.json` در داخل پوشه `snippets` ایجاد کنید.
- تعریف قطعه کد را اضافه کنید: JSON زیر را به `react.json` اضافه کنید:
- توضیحات:
- `"React Component"`: نام قطعه کد.
- `"prefix": "reactcomp"`: پیشوندی که قطعه کد را فعال میکند. تایپ `reactcomp` و فشار دادن `Tab` قطعه کد را وارد میکند.
- `"body"`: آرایهای از رشتهها که نشاندهنده خطوط کد در قطعه کد است.
- `${1:ComponentName}`: یک توقف تب که به شما امکان میدهد نام مؤلفه را به سرعت تغییر دهید.
- `"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<div>\n\t\t\t${2:Content}\n\t\t</div>\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 هستند.
- آداپتورهای اشکالزدایی: آداپتورهای اشکالزدایی سفارشی را برای پشتیبانی از اشکالزدایی زبانهای برنامهنویسی یا زمانهای اجرا خاص ایجاد کنید.
- Webviews: رابطهای کاربری مبتنی بر وب تعاملی را با استفاده از webviews در VS Code جاسازی کنید. این به شما امکان میدهد افزونههای پیچیده و جذاب بصری ایجاد کنید.
- Themeing: تمهای سفارشی را برای تغییر ظاهر VS Code ایجاد کنید. بسیاری از تمهای محبوب در VS Code Marketplace در دسترس هستند.
- Keybindings: کلیدهای میانبر سفارشی را برای نگاشت اقدامات خاص به میانبرهای صفحه کلید تعریف کنید.
بینالمللیسازی و بومیسازی (i18n و L10n)
برای دسترسی به مخاطبان جهانی، بینالمللیسازی و بومیسازی افزونه خود را در نظر بگیرید. این شامل تطبیق افزونه شما برای پشتیبانی از زبانها و مناطق مختلف است.
- رشتههای خارجی: تمام رشتههای کاربر را به فایلهای منبع جداگانه منتقل کنید.
- از VS Code API i18n استفاده کنید: VS Code API را برای بارگیری رشتههای بومیسازی شده بر اساس منطقه کاربر ارائه میدهد.
- پشتیبانی از چندین زبان: فایلهای منبع را برای زبانهای مختلف ارائه دهید.
- طرحبندی راست به چپ (RTL) را در نظر بگیرید: اگر افزونه شما متن را نمایش میدهد، مطمئن شوید که از زبانهای RTL مانند عربی و عبری پشتیبانی میکند.
انتشار افزونه شما
هنگامی که افزونه شما آماده شد، میتوانید آن را در VS Code Marketplace منتشر کنید تا دیگران از آن استفاده کنند:
- ایجاد یک سازمان Azure DevOps: برای انتشار افزونه خود به یک سازمان Azure DevOps نیاز دارید. اگر ندارید، یک حساب کاربری رایگان در وبسایت Azure DevOps ایجاد کنید.
- ابزار `vsce` را نصب کنید: VS Code Extension Manager (`vsce`) یک ابزار خط فرمان برای بستهبندی و انتشار افزونهها است. آن را با استفاده از npm به صورت سراسری نصب کنید:
- ایجاد ناشر: یک ناشر هویتی است که افزونههای شما را در Marketplace در اختیار دارد. با استفاده از دستور `vsce create-publisher` یک ناشر ایجاد کنید. شما باید یک نام ناشر و یک نشانه دسترسی شخصی (PAT) از Azure DevOps ارائه دهید.
- ایجاد یک نشانه دسترسی شخصی (PAT): در Azure DevOps، به «تنظیمات کاربر» -> «نشانههای دسترسی شخصی» بروید و یک PAT جدید با دامنه «Marketplace (Publish)» ایجاد کنید.
- بستهبندی افزونه خود: از دستور `vsce package` برای بستهبندی افزونه خود در یک فایل `.vsix` استفاده کنید.
- انتشار افزونه خود: از دستور `vsce publish` برای انتشار افزونه خود در Marketplace استفاده کنید. شما باید نام ناشر و PAT خود را ارائه دهید.
npm install -g vsce
بهترین روشها برای توسعه افزونه
برای ایجاد افزونههای VS Code با کیفیت بالا و قابل نگهداری، از این بهترین روشها پیروی کنید:
- از TypeScript استفاده کنید: TypeScript تایپ ثابت را فراهم میکند و قابلیت نگهداری کد را بهبود میبخشد.
- تستهای واحد بنویسید: تستهای واحد را بنویسید تا اطمینان حاصل کنید که افزونه شما به درستی کار میکند.
- از Linter استفاده کنید: از یک linter مانند ESLint برای اعمال سازگاری سبک کد استفاده کنید.
- کد خود را مستند کنید: مستندات واضح و مختصری برای افزونه خود بنویسید.
- خطاها را به درستی مدیریت کنید: مدیریت خطای مناسب را پیادهسازی کنید تا از خرابی افزونه شما جلوگیری شود.
- بهینه سازی عملکرد: عملکرد افزونه خود را بهینه کنید تا از کند شدن VS Code جلوگیری کنید.
- از دستورالعملهای VS Code API پیروی کنید: به دستورالعملهای VS Code API پایبند باشید تا اطمینان حاصل کنید که افزونه شما به خوبی با ویرایشگر ادغام میشود.
- قابلیت دسترسی را در نظر بگیرید: افزونه خود را برای کاربران دارای معلولیت قابل دسترسی کنید.
منابع جامعه
در اینجا برخی از منابع ارزشمند برای کسب اطلاعات بیشتر در مورد توسعه افزونه VS Code آورده شده است:
- مستندات VS Code Extension API: مستندات رسمی VS Code Extension API.
- نمونههای افزونه VS Code: مجموعهای از نمونه افزونهها که ویژگیهای مختلف API را نشان میدهند.
- VS Code Marketplace: VS Code Marketplace را مرور کنید تا افزونههای موجود را پیدا کنید و از کد آنها یاد بگیرید.
- Stack Overflow: سوال بپرسید و پاسخهایی در مورد توسعه افزونه VS Code پیدا کنید.
- GitHub: افزونههای منبع باز VS Code را کاوش کنید و به جامعه کمک کنید.
نتیجه
توسعه افزونههای VS Code یک راه قدرتمند برای سفارشی کردن محیط کدنویسی، افزایش بهرهوری و به اشتراک گذاشتن راهحلهای خود با جامعه جهانی توسعهدهندگان است. با پیروی از این راهنمای جامع، میتوانید بر هنر توسعه افزونه تسلط پیدا کنید و ابزارهای نوآورانهای ایجاد کنید که تجربه VS Code را برای خود و دیگران بهبود میبخشد. به یاد داشته باشید که جامعه را در آغوش بگیرید، به پروژههای منبع باز کمک کنید و به طور مداوم در حال یادگیری و کاوش در دنیای همیشه در حال تحول توسعه افزونه VS Code باشید. موفق باشید و کدنویسی مبارک!