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
を使用して更新してください) - Python拡張機能 (VS Code用)
Pythonの仮想環境の作成と操作方法を知っておく必要があります。
はじめに
開始するには、テンプレートのREADMEの指示に従ってください。そこでは、テンプレートを使用してリポジトリを作成する方法と、必要なツール (例: noxタスクランナー) およびオプションの依存関係 (テストサポート) をインストールする方法を学びます。
READMEには、最新の手順が記載されており、拡張機能の package.json
プレースホルダー (<pythontool-module>
、<pythontool-display-name>
など) をカスタマイズする方法の詳細も説明されています。
テンプレートの機能
テンプレートを介して拡張機能を作成した後、次の拡張機能のコントリビューションが含まれます。<pytool-module>
が mytool
に、<pytool-display-name>
が My Tool
に置き換えられたと仮定します。
- コマンド **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
でのlintingとコードアクションを実装します。 - Flake8 - lintingとコードアクションを実装します。
- Black Formatter - Black フォーマッターを統合します。
- autopep8 - autopep8 フォーマッターを統合します。
- isort - インポートをソートするためのコードアクションを追加します。
Language Server Protocolの仕様を確認して、pygls
言語サーバーの統合をより深く理解することもできます。
拡張機能の開発
テンプレートのREADMEでは、テンプレートに含まれている開発サイクルサポートについて詳しく説明しています。テンプレートには、拡張機能をビルド、実行、デバッグ、およびテストするためのコマンドと構成が含まれています。
開発中に問題が発生した場合は、一般的な問題の解決に役立つトラブルシューティングセクションがあります。
パッケージングと公開
拡張機能を公開する前に、特定の拡張機能の拡張機能 package.json
フィールド (publisher
や license
など) を更新する必要があります。補助的なMarkdownファイル (CODE_OF_CONDUCT.md
、CHANGELOG.md
など) も更新することをお勧めします。
拡張機能を公開する準備ができたら、nox
build-package
タスクを使用して .vsix
ファイルを作成し、それを拡張機能の管理ページにアップロードできます。
VS Code拡張機能の作成と公開が初めての場合は、主要なVS Code拡張機能作成トピックで概説されているベストプラクティスに従うことをお勧めします。ここでは、拡張機能をMarketplaceで素晴らしいものにするためのガイダンスと、ユーザーが安心して拡張機能をインストールできるように、検証済みパブリッシャーになる方法について説明しています。