VSCode のExtensionを開発してみる
こんにちは。
Visual Studio Code、使っていますか?
ぼくはこのエディタが大好きです。
今回は、このエディタの Extension(=プラグイン)の開発をしていきたいと思います。
※ node.js が必要です!
開発方法
- TypeScript + Node.js でいけます。
- ジェネレータは Yeoman でできています。
手順1: Yeomanを入れる。
1 | $ npm install -g yo |
また、VSCode Extension generatorも入れます。
1 | $ npm install -g generator-code |
手順2: ジェネレータを実行
1 | $ yo code |
Extension の形式は、TypeScript がおすすめです。
開発するとき、インテリセンス君が強力に働いてくれて便利だからです。
その後、名前、識別子、説明、開発者名、Git と聞かれます。
今回は、Git の設定は n にして置きました。
ずらーとモジュールがインストールされます。
手順3: Extension を実行
1 | $ cd first-ext |
code .
がうまくいかない時は、
first-ext フォルダを VSCode で開いてください。
ジェネレータを実行した状態で、
Hello world が試せるようになっているので、
作った Extension を実行してみましょう。
左側のデバッグボタン(虫)をクリック、緑色の再生ボタンをクリックします。
(ちなみに F5 キーでもいけますー)
すると、デバッグ用の VSCode がもう一つ起動します。
この状態で、Extension をテスト(=実行)できるわけです。
デバッグ用に開いた VSCode で、Ctrl + Shift + P
をしてコマンドパレットを開きます。Hello world
と入力しEnter キーを押してみましょう。
Hello world というメッセージが表示されます。
この動きは、すべて今作った Extension で動いています。
では、どういう仕組みで動いているのか見てみましょう。
手順4: 動く仕組みは・・?
いまデバッグしていたウインドウは閉じて、
先ほどのプラグインを開いたウインドウに切り替えましょう。
まず、コマンドパレットで「Hello World」と入力しましたね。
これはpackage.json
の、contributes.commands
から取得されています。
ここでは、コマンドパレットでHello World
が実行されたら、extension.sayHello
を実行すると書いてあります。
では、この extension.sayHello
はどこにあるのでしょう。src/extension.ts
を開いてみましょう。
activate
関数の中に、vscode.commands.registerCommand(...)
を呼び出している行があります。(17行目)
ここでは、extension.sayHello
コマンドが呼び出されたら、
第二引数のコールバック関数を実行する、となっています。
コールバック関数には、vscode.window.showInformationMessage('Hello World!')
と書かれています。
これは、指定された文字列を先ほどのようなメッセージで表示する関数です。
手順5: 少し変えてみる
extension.ts を、少し変更してみましょう。
1 | let disposable = vscode.commands.registerCommand('extension.sayHello', () => { |
似た関数で、showErrorMessage
という物があります。
これは、エラーを表示する関数です。
実行してみましょう。手順は先程と同じです。
(F5キーでもいけるよ)
同じように、Ctrl+Shift+P
から Hello World を選ぶと、
エラーメッセージ出現!
まとめ
このように、Extension は、
TypeScript + Node.js で開発できます。
また、公式サイトにも英語ですが、
Extension の作成方法が載っているので、
見てみてください。