撰寫 Python 擴充功能
注意:如果您是 VS Code 擴充功能撰寫新手,建議您先閱讀您的第一個擴充功能教學課程,並嘗試建立一個簡單的 Hello World 擴充功能。
Python 擴充功能提供 API,讓其他擴充功能可與使用者電腦上可用的 Python 環境搭配使用。請查看 @vscode/python-extension npm 模組,其中包含類型和協助程式公用程式,可從您的擴充功能存取這些 API。
Python 擴充功能範本
Python 擴充功能範本可協助您開始為您喜愛的 Python 工具建置 Visual Studio Code 擴充功能。它可以是程式碼靜態分析器、格式器或程式碼分析,或所有這些的組合。此範本將提供您建置擴充功能所需的基本建構區塊,以將您的工具整合到 VS Code 中,並且它已經可以存取上述 Python API。
程式語言與框架
擴充功能範本包含兩個部分:擴充功能部分和語言伺服器部分。擴充功能部分是以 TypeScript 撰寫,而語言伺服器部分是以 Python 透過 pygls
(Python 語言伺服器) 程式庫撰寫。
當您使用此範本時,您主要會處理程式碼的 Python 部分。您將使用語言伺服器協定將您的工具與擴充功能部分整合。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
預留位置 (<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
上實作程式碼靜態分析和程式碼動作。 - Flake8 - 實作程式碼靜態分析和程式碼動作。
- Black Formatter - 整合 Black 格式器。
- autopep8 - 整合 autopep8 格式器。
- isort - 新增程式碼動作以排序匯入。
您也可以檢閱語言伺服器協定規格,以更深入瞭解 pygls
語言伺服器整合。
擴充功能開發
範本 README 詳細說明範本隨附的開發週期支援。範本具有命令和組態,因此您可以建置、執行、偵錯和測試您的擴充功能。
如果您在開發期間遇到問題,則有一個疑難排解章節可協助您解決常見問題。
封裝與發佈
在發佈您的擴充功能之前,您需要更新特定擴充功能的擴充功能 package.json
欄位 (例如 publisher
和 license
)。您也會想要更新輔助 Markdown 檔案 (CODE_OF_CONDUCT.md
、CHANGELOG.md
等)。
一旦您的擴充功能準備好發佈,就會有一個 nox
build-package
工作來建立 .vsix
檔案,然後您可以將其上傳到您的擴充功能管理頁面。
如果您是建立和發佈 VS Code 擴充功能的新手,我們建議您遵循主要 VS Code 擴充功能撰寫主題中概述的最佳做法。您可以在此處找到指南,以協助您的擴充功能在 Marketplace 上看起來很棒,以及如何成為已驗證的發行者,以便使用者放心地安裝您的擴充功能。