🚀 在 VS Code 中取得

撰寫 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。擴充功能範本針對一些設定提供範例,您也可以查看我們團隊針對一些熱門工具開發的擴充功能

需求

  1. VS Code 1.64.0 或更高版本
  2. Python 3.7 或更高版本
  3. node >= 14.19.0
  4. npm >= 8.3.0 (npm 隨附於 node 安裝,檢查 npm 版本,使用 npm install -g npm@8.3.0 進行更新)
  5. 適用於 VS Code 的 Python 擴充功能

您應該知道如何建立和使用 Python 虛擬環境。

開始使用

若要開始使用,請依照範本 README 中的指示進行。您將在那裡學習如何使用範本建立您的存放庫,以及如何安裝必要的工具 (例如 nox 工作執行器) 和選用相依性 (測試支援)。

README 具有最新的指示,並且詳細說明如何自訂擴充功能的 package.json 預留位置 (<pythontool-module><pythontool-display-name> 等)。

範本功能

透過範本建立擴充功能後,它將包含以下擴充功能貢獻。假設 <pytool-module> 已取代為 mytool,而 <pytool-display-name> 已取代為 My Tool

  1. 命令 My Tool: 重新啟動伺服器 (命令 ID: mytool.restart)。
  2. 下列設定
    • mytool.logLevel
    • mytool.args
    • mytool.path
    • mytool.importStrategy
    • mytool.interpreter
    • mytool.showNotification
  3. 下列擴充功能啟動觸發器
    • 在語言 python 上。
    • 在開啟的工作區中找到具有 .py 副檔名的檔案時。
    • 在命令 mytool.restart 上。
  4. 用於記錄的輸出通道 輸出 > My Tool

整合您的工具

產生的 bundled/tool/server.py 檔案是您將進行大部分變更的地方。檔案中的 TODO 註解指出各種自訂點。也在範本中的其他位置 (例如其他 Python 和 Markdown 檔案) 搜尋 TODO 註解。您將需要檢閱 LICENSE 檔案,即使您想要保留 MIT 授權也一樣。

範例

有幾個從範本建立的範例實作

  • Pylint - 在檔案 opensaveclose 上實作程式碼檢查和程式碼動作。
  • Flake8 - 實作程式碼檢查和程式碼動作。
  • Black Formatter - 整合 Black 格式器。
  • autopep8 - 整合 autopep8 格式器。
  • isort - 新增程式碼動作以排序匯入。

您也可以檢閱語言伺服器協定規格,以更深入瞭解 pygls 語言伺服器整合。

擴充功能開發

範本 README 詳細說明範本隨附的開發週期支援。範本具有命令和組態,因此您可以建置、執行、偵錯和測試您的擴充功能。

如果您在開發期間遇到問題,則有一個疑難排解章節可協助您解決常見問題。

封裝與發佈

在發佈擴充功能之前,您需要更新特定擴充功能的擴充功能 package.json 欄位 (例如 publisherlicense)。您也會想要更新輔助 Markdown 檔案 (CODE_OF_CONDUCT.mdCHANGELOG.md 等)。

當您的擴充功能準備好發佈時,有一個 nox build-package 工作可建立 .vsix 檔案,然後您可以將其上傳到您的擴充功能管理頁面

如果您不熟悉建立和發佈 VS Code 擴充功能,建議您遵循主要 VS Code 擴充功能撰寫主題中概述的最佳做法。您可以在這裡找到指南,協助您讓擴充功能在 Marketplace 上看起來很棒,以及如何成為經過驗證的發行者,以便使用者放心地安裝您的擴充功能。