Итак, вы хотите создать расширения для VS Code? Отличный выбор! Вы вот-вот погрузитесь в мир, где сможете заставить редакторы работать по вашей воле… если справитесь с первоначальным хаосом настройки. Давайте превратим «Hello World» в «Hello продуктивный рабочий процесс» с помощью магии JavaScript.
1. Настройка рабочего пространства для расширений
Сначала вооружитесь этими инструментами:
- Node.js (версия 18 или новее, если вам не нравятся ошибки версий);
- Yeoman (
npm install -g yo
); - Генератор расширений VS Code (
npm install -g generator-code
).
Теперь проведите свой ритуал инициации:
yo code
Вы столкнётесь с Вопросом™. Выберите «Новое расширение (JavaScript)», если только энтузиасты TypeScript не оказывают на вас давление. Совет: когда вас спросят о репозитории Git, введите свой профиль на GitHub, если только вы не планируете скрывать этот проект, как ядерные коды.
2. Анатомия расширения
Ваш сгенерированный проект содержит важные файлы:
.
├── .vscode
├── test
├── extension.js # Главный центр событий
├── package.json # Где реализуются мечты
└── vsc-extension-quickstart.md # Инструкция, которую вы сделаете вид, что читаете
Вот как выглядит жизненный цикл вашего расширения:
3. Ваш первый реальный код
Замените стандартную команду в extension.js
на что-нибудь более интересное:
function activate(context) {
let disposable = vscode.commands.registerCommand('helloworld.helloWorld', () => {
// Заставьте редактор умолять о пощаде
vscode.window.showInformationMessage('Ваш код теперь подчиняется мне!');
// Вставьте текст, как цифровой вандал
const editor = vscode.window.activeTextEditor;
if (editor) {
editor.edit(editBuilder => {
editBuilder.insert(editor.selection.active, '✍️ Написано повелителем расширений');
});
}
});
context.subscriptions.push(disposable);
}
Проверьте это творение, нажав F5. Новое окно VS Code появляется как монстр Франкенштейна — ваша личная игровая площадка.
4. Добавление настоящих сверхспособностей
Давайте создадим элемент строки состояния, который будет считать время вашей прокрастинации:
let statusBarItem;
function updateStatusBar() {
const text = `Прокрастинирую уже ${Math.floor(Math.random() * 60)} минут`;
statusBarItem.text = text;
}
function activate(context) {
statusBarItem = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Right, 100);
statusBarItem.command = 'extension.procrastinationTracker';
context.subscriptions.push(statusBarItem);
setInterval(updateStatusBar, 60000);
updateStatusBar();
statusBarItem.show();
}
Теперь вы всегда будете точно знать, насколько вы непродуктивны — благодаря собственному творению!
5. Отладка: искусство колдовства с console.log
Когда что-то ломается (а так и будет), используйте эти инструменты:
console.log('Достигли этой строки'); // Классика бессмертна
vscode.window.showErrorMessage('Этого не должно было случиться (но случилось)');
Конфигурация отладки в .vscode/launch.json
— ваш лучший друг. Устанавливайте точки останова и следите за переменными, как детектив кода.
6. Публикация: шоу для вашего расширения
Упакуйте своё творение:
npm install -g vsce
vsce package
Вы получите блестящий файл .vsix
. Загрузите его на VS Code Marketplace и наблюдайте, как (воображаемые) загрузки растут!
7. Профессиональные советы из окопов
- Автоматизируйте настройку: используйте
vscode.workspace.getConfiguration
, чтобы пользователи могли настраивать без вмешательства в JSON. - Обрабатывайте одноразовые объекты: если не хотите, чтобы утечки памяти пожирали вашу оперативную память, как монстр из печенья.
- Тестируйте на реальных жертвах: друзья становятся отличными бета-тестерами (пока не заблокируют вас). Помните: каждое отличное расширение начиналось с того, что кто-то упорно отказывался искать в Google, как сделать это вручную. Теперь сделайте этот редактор своим помощником! 🧙♂️ (Примеры кода протестированы на VS Code версии 4.2.1. Могут вызывать внезапное желание переписать на TypeScript. Побочные эффекты включают звёзды на GitHub и синдром самозванца.)