mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1298 文字
3 分
VSCodeプラグイン開発入門
2025-03-13

開発環境#

  1. Nodejs

  2. vscode

  3. 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 の起動パフォーマンスに影響を与える可能性があるため、本番環境での使用は推奨されません
  1. onStartupFinished
    • VSCode の起動が完了した後に拡張機能を有効化
    • より遅く有効化されますが、起動パフォーマンスへの影響は小さいです
  2. onCommand
    • ユーザーが特定のコマンドを実行したときに拡張機能を有効化
    • 例えば:onCommand.helloWorld
  3. onLanguage
    • 特定の言語のファイルを開いたときに拡張機能を有効化
    • 例えば:onLanguage, onLanguage
  4. onView
    • 特定のビューが表示されているときに拡張機能を有効化
    • 例えば:onView

その他のアクティベーションイベント#

  1. onUri
    • 特定の URI を開くと拡張機能を有効化
  2. onWebviewPanel
    • 特定のタイプの Webview パネルを作成したときに拡張機能を有効化します
  3. onCustomEditor
    • カスタムエディターを開くと拡張機能を有効化します
  4. onDebug
    • デバッグセッションを開始したときに拡張機能を有効化します
  5. onDebugInitialConfigurations
    • デバッグ構成を初期化するときに拡張機能を有効化します
  6. onDebugResolve
    • 特定のタイプのデバッグ構成を解決するときに拡張機能を有効化します
  7. onFileSystem
    • 特定のファイルシステムスキームにアクセスするときに拡張機能を有効化します
    • 例:onFileSystem
  8. onTerminalProfile
    • 特定のターミナル設定を作成するときに拡張機能を有効化します
  9. onAuthenticationRequest
    • 特定の認証プロバイダーを要求するときに拡張機能を有効化します
  10. onSearch
    • 検索を実行するときに拡張機能を有効化します
  11. onTaskType
    • 特定のタイプのタスクを実行するときに拡張機能を有効化します
  12. onNotebook
    • 特定のタイプのノートブックを開くときに拡張機能を有効化します
  13. onTerminal
    • ターミナルを作成するときに拡張機能を有効化します
共有

この記事が役に立ったときは、ぜひ他の人に共有してください!

VSCodeプラグイン開発入門
https://dreaife.tokyo/jp/posts/vscode-plugin-dev/
著者
dreaife
公開日
2025-03-13
ライセンス
CC BY-NC-SA 4.0

一部の情報は古い可能性があります

関連した投稿 スマート
1
新時代における第一回の選抜
life AI技術の発展に伴い、高度なモデルを利用するコストが社会の階層化を招き、経済力のある人だけがこれらのモデルを使えるようになる可能性がある。現在の価格はまだ許容範囲だが、将来的な値上がりにより大多数が負担できなくなり、第一のふるい分けが生じるかもしれない。筆者はこの現象に不安を覚えつつ、AIの応用がすでにプログラミング領域を超え、より広範な産業へと広がっていることも実感している。新しい世界の課題と機会に向き合いながら、個人は時代の推進力に押されつつ探索を続けている。
2
ブログ移行-Mizuki設定記録
infra notionNextからmizukiへの移行過程の記録、主な理由はnotionNextの制限です。mizukiを選んだ理由は、軽量で機能のバランスが良く、日記とプロジェクトの表示をサポートしているからです。設定プロセスは簡単で、内容はmdとtsファイルによって制御され、同時にbangumi APIとの接続も実現しています。CIを用いてNotionのコンテンツを同期する計画を立て、多言語対応を進め、画像リンクの有効期限切れの問題を解決しました。
3
心理記録1
psycho 自分が感情を抑圧していることに気づき、過去の生活習慣が外界への恐怖と内面の停滞を招いてきたことを振り返る。世界との相互作用を通じて本当の自分を見つけたいと思い、進む方向を選ぶ責任感と、可能性を失うことへの恐れに向き合う。本当の自分は探求の中で形づくられる必要があり、未来の方向を選ぶことは他の可能性を手放すことを意味する。
4
Node.js入門
BACKEND Node.jsはChrome V8エンジンを基盤としたJavaScriptランタイムで、シングルスレッド、ノンブロッキングI/O、モジュール化、クロスプラットフォーム対応といった特徴を持ちます。代表的なモジュールには、ファイルシステム、HTTPサービス、パス操作、OS情報取得があります。npmはライブラリの導入・管理に使うパッケージマネージャです。非同期プログラミングパターンにはコールバック、Promise、async/awaitがあり、Webサービスやリアルタイムアプリの構築に適しています。
5
TypeScript入門
FRONTEND TypeScriptの基礎には、型システム、インターフェース、クラス、デコレータなどが含まれます。number、string、boolean などの基本型をサポートし、型注釈、ジェネリクス、ユニオン型、型エイリアスなどの機能も利用できます。デコレータはクラスやメソッドにメタデータを付与するために使われ、モジュールや名前空間はコード整理に役立ちます。

目次