開発環境
-
Nodejs
-
vscode
-
Yeoman&generator-code
拡張機能プロジェクトの基本構成を簡単に生成するために、Yeoman と VSCode 公式の拡張機能ジェネレーターを使用できます。ターミナルを開き、以下のコマンドを入力してグローバルインストールします:
npm install -g yo generator-code
拡張機能の初期フレームワーク
拡張機能の作成
yo codeジェネレーターから以下の質問が表示されます:
- **拡張機能の種類を選択**:たとえば「New Extension (TypeScript)」または「New Extension (JavaScript)」。- **拡張機能の名前、説明**:案内に従って、希望する拡張機能の名前と説明を入力します。- **Git の初期化**:Git リポジトリを初期化するかどうか。- **パッケージマネージャー**:npm または yarn のどちらを使用するか選択します。生成が完了すると、基本構成が整ったプロジェクトが作成されます。
構成を理解する
生成されたプロジェクトを開くと、いくつかの重要なファイルとディレクトリがあります:
-
package.jsonこのファイルでは、拡張機能の基本情報、依存関係、VSCode のアクティベーションイベント、コマンド登録を定義します。
例:
{"name": "my-sample-extension","displayName": "My Sample Extension","description": "A simple VSCode extension.","version": "0.0.1","engines": {"vscode": "^1.60.0"},"activationEvents": ["onCommand:extension.helloWorld"],"main": "./out/extension.js","contributes": {"commands": [{"command": "extension.helloWorld","title": "Hello World"}]},"scripts": {"vscode:prepublish": "npm run compile","compile": "tsc -p ./"},"devDependencies": {"typescript": "^4.0.0","vscode": "^1.1.37","@types/node": "^12.0.0"}} -
src/extension.ts****(またはextension.js)これは拡張機能のエントリーファイルであり、拡張機能がアクティブ化されると、ここに記述されたコードが実行されます。
簡単な例:
import * as vscode from 'vscode';export function activate(context: vscode.ExtensionContext) {console.log('Congratulations, your extension "my-sample-extension" is now active!');let disposable = vscode.commands.registerCommand('extension.helloWorld', () => {vscode.window.showInformationMessage('Hello World from your VSCode extension!');});context.subscriptions.push(disposable);}export function deactivate() {}
実行とデバッグ
- プロジェクトを開くと、VSCode のデバッグパネルに
Launch Extensionという構成が表示されます。 -
F5を押すと、VSCode が新しい拡張機能開発ホスト(Extension Development Host)を起動します。 - 新しいウィンドウで、コマンドパレット(
Ctrl+Shift+PまたはCmd+Shift+P)から登録したコマンドを入力します。たとえば「Hello World」と入力して、拡張機能が正常に動作するかテストします。
拡張機能の公開
開発とテストが完了したら、他のユーザーが利用できるように、拡張機能を VSCode Marketplace に公開できます:
-
拡張機能のパッケージ化と公開を行うために、
vsceツールをインストールします:npm install -g vsce -
プロジェクトのルートディレクトリでパッケージ化コマンドを実行します:
vsce package -
公式ドキュメント の案内に従って、公開手続きを完了します。
実際の開発
拡張機能の起動
VSCode 拡張機能では、package.json 内の activationEvents 配列によって、拡張機能をアクティブ化するタイミングを定義します。主なアクティベーションイベントの種類は以下のとおりです:
よく使用されるアクティベーションイベント
- VSCode の起動時に拡張機能を即座にアクティブ化します- メリット:拡張機能を常に利用できます- デメリット:VSCode の起動パフォーマンスに影響するため、本番環境での使用は推奨されません2. onStartupFinished
- VSCode の起動完了後に拡張機能をアクティブ化します
- * より少し遅くアクティブ化されますが、起動パフォーマンスへの影響は小さくなります
3. onCommand
その他のアクティベーションイベント
- onUri
- 特定の URI を開いたときに拡張機能をアクティブ化します
- 例:onUri:https://my-extension.com
- onWebviewPanel
- 特定の種類の webview パネルが作成されたときに拡張機能をアクティブ化します
- onCustomEditor
- カスタムエディターを開いたときに拡張機能をアクティブ化します
- onDebug
- デバッグセッションを開始したときに拡張機能をアクティブ化します
- onDebugInitialConfigurations
- デバッグ構成を初期化するときに拡張機能をアクティブ化します
- onDebugResolve
- 特定の種類のデバッグ構成を解決するときに拡張機能をアクティブ化します
- onFileSystem
- 特定のファイルシステムスキームにアクセスしたときに拡張機能をアクティブ化します
- 例:onFileSystem
- onTerminalProfile
- 特定のターミナルプロファイルを作成したときに拡張機能をアクティブ化します
- onAuthenticationRequest
- 特定の認証プロバイダーが要求されたときに拡張機能をアクティブ化します
- onSearch
- 検索操作を実行したときに拡張機能をアクティブ化します
- onTaskType
- 特定の種類のタスクを実行したときに拡張機能をアクティブ化します
- onNotebook
- 特定の種類のノートブックを開いたときに拡張機能をアクティブ化します
- onTerminal
- ターミナルを作成したときに拡張機能をアクティブ化します
この記事が役に立ったときは、ぜひ他の人に共有してください!
一部の情報は古い可能性があります





