Python 拡張機能の作成
注: VS Code 拡張機能の作成が初めての場合は、まず「最初の拡張機能」チュートリアルを読んで、簡単な「Hello World」拡張機能の作成を試してみてください。
Python 拡張機能は、ユーザーのマシンで利用可能な Python 環境を他の拡張機能が操作できるようにする API を提供します。これらの API に拡張機能からアクセスするための型とヘルパーユーティリティを含む @vscode/python-extension npm モジュールを確認してください。
Python 拡張機能テンプレート
Python 拡張機能テンプレートは、お気に入りの Python ツール用の Visual Studio Code 拡張機能の構築を開始するのに役立ちます。それはリンター、フォーマッター、コード分析、あるいはそれらすべてを組み合わせたものでも構いません。このテンプレートは、VS Code にツールを統合する拡張機能を構築するために必要な基本的な構成要素を提供し、上記の Python API にすでにアクセスできます。
プログラミング言語とフレームワーク
拡張機能テンプレートには、拡張機能部分と言語サーバー部分の2つの部分があります。拡張機能部分は TypeScript で記述されており、言語サーバー部分は `pygls` (Python 言語サーバー) ライブラリを使用して Python で記述されています。
このテンプレートを使用する場合、コードの大部分は Python 部分で作業することになります。Language Server Protocol を使用して、ツールを拡張機能部分と統合します。`pygls` は現在、LSP のバージョン 3.16 で動作します。
TypeScript 部分は、VS Code およびその UI の操作を処理します。拡張機能テンプレートには、ツールで使用できるいくつかの設定が組み込まれています。ツールをサポートするために新しい設定を追加する必要がある場合は、TypeScript を少し操作する必要があります。拡張機能テンプレートにはいくつかの設定例があり、人気のあるツール向けに私たちのチームが開発した拡張機能も参照できます。
要件
- VS Code 1.64.0 以降
- Python 3.7 以降
- node >= 14.19.0
- npm >= 8.3.0 (`npm` は node と一緒にインストールされます。npm のバージョンを確認し、`npm install -g npm@8.3.0` を使用して更新してください)
- VS Code 用の Python 拡張機能
Python 仮想環境の作成方法と操作方法を知っている必要があります。
はじめに
始めるには、テンプレートの README の指示に従ってください。そこでは、テンプレートを使用してリポジトリを作成する方法、および必要なツール (たとえば、nox タスクランナー) やオプションの依存関係 (テストサポート) をインストールする方法を学ぶことができます。
README には最新の指示が記載されており、拡張機能の `package.json` プレースホルダー (`
テンプレートの機能
テンプレートを介して拡張機能を作成すると、以下の拡張機能の寄与が含まれます。`
- コマンド My Tool: Restart Server (コマンド ID: `mytool.restart`)。
- 以下の設定
mytool.logLevel
mytool.args
mytool.path
mytool.importStrategy
mytool.interpreter
mytool.showNotification
- 拡張機能のアクティベーションの以下のトリガー
- 言語 `python` の場合。
- 開いているワークスペース内で `.py` 拡張子を持つファイルが見つかった場合。
- コマンド `mytool.restart` の場合。
- ログ用の出力チャネル 出力 > My Tool。
ツールの統合
生成された `bundled/tool/server.py` ファイルは、ほとんどの変更を行う場所です。ファイル内の `TODO` コメントは、さまざまなカスタマイズポイントを示しています。また、他の Python ファイルや Markdown ファイルなど、テンプレート内の他の場所にある `TODO` コメントも検索してください。MIT ライセンスのままであっても、LICENSE ファイルを確認することをお勧めします。
例
テンプレートから作成されたいくつかの実装例があります
- Pylint - ファイル `open`、`save`、`close` でのリンティングとコードアクションを実装します。
- Flake8 - リンティングとコードアクションを実装します。
- Black Formatter - Black フォーマッターを統合します。
- autopep8 - autopep8 フォーマッターを統合します。
- isort - インポートをソートするためのコードアクションを追加します。
`pygls` 言語サーバーの統合をよりよく理解するために、Language Server Protocol の仕様も確認できます。
拡張機能の開発
テンプレートの README には、テンプレートに含まれる開発サイクルサポートについて詳しく説明されています。このテンプレートには、拡張機能を構築、実行、デバッグ、テストするためのコマンドと設定が含まれています。
開発中に問題が発生した場合は、一般的な問題の解決に役立つトラブルシューティングセクションがあります。
パッケージ化と公開
拡張機能を公開する前に、ご自身の拡張機能に合わせて、拡張機能の `package.json` フィールド (例: `publisher` や `license`) を更新する必要があります。また、補助的な Markdown ファイル (`CODE_OF_CONDUCT.md`、`CHANGELOG.md` など) も更新することをお勧めします。
拡張機能の公開準備ができたら、`nox` の `build-package` タスクを使用して `.vsix` ファイルを作成します。その後、拡張機能の管理ページにアップロードできます。
VS Code 拡張機能の作成と公開が初めての場合は、VS Code の主要な拡張機能の作成に関するトピックで示されているベストプラクティスに従うことをお勧めします。ここでは、Marketplace で拡張機能を魅力的に見せる方法や、ユーザーが安心して拡張機能をインストールできるように検証済みパブリッシャーになる方法に関するガイダンスを見つけることができます。