延伸模組資訊清單

每個 Visual Studio Code 擴充功能都需要在擴充功能目錄結構的根目錄中包含一個 package.json 資訊清單檔案。

欄位

名稱 必填 類型 詳細資訊
name name string 擴充功能的名稱 - 應全部小寫且不含空格。
名稱在 Marketplace 中必須是唯一的。
version name string 符合 SemVer 標準的版本號。
publisher name string 發行者識別碼
engines name object 一個物件,至少包含 vscode 鍵,用以符合該擴充功能所相容的 VS Code 版本。不能設為 *。例如:^0.10.5 表示相容的最低 VS Code 版本為 0.10.5
license string 請參考 npm 文件。如果您的擴充功能根目錄中有 LICENSE 檔案,則 license 的值應設為 "SEE LICENSE IN <filename>"
displayName string 在 Marketplace 中顯示的擴充功能名稱。
顯示名稱在 Marketplace 中必須是唯一的。
description string 關於您的擴充功能用途的簡短說明。
categories string[] 您想要為擴充功能使用的類別。允許的值:[Programming Languages, Snippets, Linters, Themes, Debuggers, Formatters, Keymaps, SCM Providers, Other, Extension Packs, Language Packs, Data Science, Machine Learning, Visualization, Notebooks, Education, Testing]
keywords array 一組關鍵字陣列,以便更輕鬆地找到您的擴充功能。這些關鍵字會與 Marketplace 上的其他擴充功能標籤 (Tags) 一起列出。目前此列表限制為最多 30 個關鍵字。
galleryBanner object 協助調整 Marketplace 頁首以符合您的圖示。詳情請見下方。
preview boolean 將擴充功能標記為 Marketplace 中的「預覽」版本。
main string 擴充功能的進入點。
browser string 您的 Web 擴充功能的進入點。
contributes object 描述擴充功能貢獻項目 (contributions) 的物件。
activationEvents array 此擴充功能的啟用事件 (activation events) 陣列。
badges array 顯示在 Marketplace 擴充功能頁面側邊欄中的已核准徽章陣列。每個徽章都是一個包含 3 個屬性的物件:url(徽章圖片的網址)、href(使用者點擊徽章後跳轉的連結)以及 description(說明)。
markdown string 控制 Marketplace 中使用的 Markdown 渲染引擎。可設為 github(預設)或 standard
qna marketplace(預設)、stringfalse 控制 Marketplace 中的 Q & A 連結。設為 marketplace 可啟用預設的 Marketplace Q & A 網站。設為字串可提供自訂 Q & A 網站的網址。設為 false 可完全停用 Q & A 功能。
sponsor object 指定使用者可以贊助您擴充功能的位置。這是一個僅包含 url 屬性的物件,連結至使用者可以贊助您的頁面。
dependencies object 您的擴充功能所需的任何 Node.js 執行階段相依套件。與 npm 的 dependencies 完全相同。
devDependencies object 您的擴充功能所需的任何 Node.js 開發相依套件。與 npm 的 devDependencies 完全相同。
extensionPack array 一組擴充功能 ID 陣列,這些擴充功能可以一起安裝。擴充功能的 ID 一律為 ${publisher}.${name}。例如:vscode.csharp
extensionDependencies array 一組擴充功能 ID 陣列,本擴充功能依賴於這些擴充功能。擴充功能的 ID 一律為 ${publisher}.${name}。例如:vscode.csharp
extensionKind array 一個陣列,指出擴充功能應在遠端設定中何處執行。值為 ui(在本機執行)、workspace(在遠端機器執行)或兩者皆可,其順序決定偏好設定。例如:[ui, workspace] 表示擴充功能可以在任一位置執行,但偏好在本機執行。詳情請見此處
scripts object npm 的 scripts 完全相同,但包含額外的 VS Code 特定欄位,例如 vscode:prepublishvscode:uninstall
icon string 圖示的路徑,至少需為 128x128 像素(Retina 螢幕建議為 256x256)。
pricing string 擴充功能的定價資訊。允許的值:FreeTrial。預設值:Free。詳情請見此處
capabilities object 描述擴充功能在受限工作區中功能狀態的物件:untrustedWorkspacesvirtualWorkspaces

另請參閱 npm 的 package.json 參考資料

範例

以下是一個完整的 package.json

{
  "name": "wordcount",
  "displayName": "Word Count",
  "version": "0.1.0",
  "publisher": "ms-vscode",
  "description": "Markdown Word Count Example - reports out the number of words in a Markdown file.",
  "author": {
    "name": "sean"
  },
  "categories": ["Other"],
  "icon": "images/icon.png",
  "galleryBanner": {
    "color": "#C80000",
    "theme": "dark"
  },
  "pricing": "Free",
  "activationEvents": ["onLanguage:markdown"],
  "engines": {
    "vscode": "^1.0.0"
  },
  "main": "./out/extension",
  "scripts": {
    "vscode:prepublish": "node ./node_modules/vscode/bin/compile",
    "compile": "node ./node_modules/vscode/bin/compile -watch -p ./"
  },
  "devDependencies": {
    "@types/vscode": "^0.10.x",
    "typescript": "^1.6.2"
  },
  "license": "SEE LICENSE IN LICENSE.txt",
  "bugs": {
    "url": "https://github.com/microsoft/vscode-wordcount/issues",
    "email": "sean@contoso.com"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/microsoft/vscode-wordcount.git"
  },
  "homepage": "https://github.com/microsoft/vscode-wordcount/blob/main/README.md"
}

Marketplace 展示技巧

以下是一些技巧與建議,可讓您的擴充功能在 VS Code Marketplace 上顯示時更為美觀。

請務必使用最新的 vsce,執行 npm install -g @vscode/vsce 以確保您已安裝。

在您的擴充功能根目錄中準備一個 README.md Markdown 檔案,我們將會把其內容包含在擴充功能詳細資訊的主體中(在 Marketplace 上)。您可以在 README.md 中提供相對路徑的圖片連結。

以下是一些範例

  1. 字數統計 (Word Count)
  2. Markdown 工具 (MD Tools)

提供良好的顯示名稱與描述。這對於 Marketplace 和產品顯示非常重要。這些字串也會用於 VS Code 中的文字搜尋,因此設定相關的關鍵字非常有幫助。

    "displayName": "Word Count",
    "description": "Markdown Word Count Example - reports out the number of words in a Markdown file.",

圖示與對比鮮明的橫幅顏色在 Marketplace 頁面頁首看起來非常出色。theme 屬性是指橫幅中使用的字型顏色 - darklight

{
  "icon": "images/icon.png",
  "galleryBanner": {
    "color": "#C80000",
    "theme": "dark"
  }
}

有幾個選擇性的連結(bugshomepagerepository)您可以設定,這些連結會顯示在 Marketplace 的 資源 (Resources) 區塊下。

{
  "license": "SEE LICENSE IN LICENSE.txt",
  "homepage": "https://github.com/microsoft/vscode-wordcount/blob/main/README.md",
  "bugs": {
    "url": "https://github.com/microsoft/vscode-wordcount/issues",
    "email": "sean@contoso.com"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/microsoft/vscode-wordcount.git"
  }
}
Marketplace 資源連結 package.json 屬性
問題回報 (Issues) bugs:url
儲存庫 (Repository) repository:url
首頁 (Homepage) homepage
授權條款 license

為您的擴充功能設定一個 category。同一 category 中的擴充功能會在 Marketplace 上歸類在一起,這有助於篩選與探索。

注意:僅使用對您的擴充功能有意義的值。允許的值為 [Programming Languages, Snippets, Linters, Themes, Debuggers, Formatters, Keymaps, SCM Providers, Other, Extension Packs, Language Packs, Data Science, Machine Learning, Visualization, Notebooks, Education, Testing]。對於語法高亮和程式碼補全等通用語言功能,請使用 Programming LanguagesLanguage Packs 類別保留給顯示語言擴充功能使用(例如:保加利亞語本地化)。

{
  "categories": ["Linters", "Programming Languages", "Other"]
}

已核准的徽章

基於安全考量,我們僅允許來自受信任服務的徽章。

我們允許來自以下 URL 前綴的徽章:

  • api.travis-ci.com
  • app.fossa.io
  • badge.buildkite.com
  • badge.fury.io
  • badgen.net
  • badges.frapsoft.com
  • badges.gitter.im
  • cdn.travis-ci.com
  • ci.appveyor.com
  • circleci.com
  • cla.opensource.microsoft.com
  • codacy.com
  • codeclimate.com
  • codecov.io
  • coveralls.io
  • david-dm.org
  • deepscan.io
  • dev.azure.com
  • docs.rs
  • flat.badgen.net
  • github.com (僅限 Workflows)
  • gitlab.com
  • godoc.org
  • goreportcard.com
  • img.shields.io
  • isitmaintained.com
  • marketplace.visualstudio.com
  • nodesecurity.io
  • opencollective.com
  • snyk.io
  • travis-ci.com
  • visualstudio.com
  • vsmarketplacebadges.dev

注意:請將 vsmarketplacebadge.apphb.com 徽章替換為 vsmarketplacebadges.dev 徽章。

如果您有其他想要使用的徽章,請在 GitHub 開啟一個 Issue,我們很樂意評估。

結合擴充功能貢獻

yo code 產生器可讓您輕鬆封裝 TextMate 主題、著色器 (colorizers) 和程式碼片段,並建立新的擴充功能。執行產生器時,它會為每個選項建立一個完整的獨立擴充功能套件。然而,通常將多個貢獻合併在一個擴充功能中會更方便。例如,如果您要新增對新語言的支援,您會希望同時提供使用者帶有著色功能的語言定義、程式碼片段,甚至可能是偵錯支援。

若要合併擴充功能貢獻,請編輯現有的擴充功能資訊清單 package.json 並新增新的貢獻與相關檔案。

以下是一個包含 LaTex 語言定義(語言識別碼與副檔名)、著色(grammars)與程式碼片段的擴充功能資訊清單。

{
  "name": "language-latex",
  "description": "LaTex Language Support",
  "version": "0.0.1",
  "publisher": "someone",
  "engines": {
    "vscode": "0.10.x"
  },
  "categories": ["Programming Languages", "Snippets"],
  "contributes": {
    "languages": [
      {
        "id": "latex",
        "aliases": ["LaTeX", "latex"],
        "extensions": [".tex"]
      }
    ],
    "grammars": [
      {
        "language": "latex",
        "scopeName": "text.tex.latex",
        "path": "./syntaxes/latex.tmLanguage.json"
      }
    ],
    "snippets": [
      {
        "language": "latex",
        "path": "./snippets/snippets.json"
      }
    ]
  }
}

請注意,擴充功能資訊清單的 categories 屬性現在同時包含了 Programming LanguagesSnippets,以便在 Marketplace 上進行輕鬆的探索與篩選。

提示:請確保您合併的貢獻使用相同的識別碼。在上述範例中,所有三個貢獻都使用 "latex" 作為語言識別碼。這讓 VS Code 知道該著色器 (grammars) 和程式碼片段是針對 LaTeX 語言的,並且會在編輯 LaTeX 檔案時啟用。

延伸模組套件

您可以將單獨的擴充功能打包在一起成為 擴充功能套件 (Extension Packs)。擴充功能套件是一組可以一起安裝的擴充功能集合。這能讓您輕鬆與其他使用者分享您喜愛的擴充功能,或為特定情境(例如 PHP 開發)建立一組擴充功能,幫助 PHP 開發者快速上手 VS Code。

擴充功能套件透過 package.json 檔案內的 extensionPack 屬性來綑綁其他擴充功能。

例如,以下是一個包含偵錯器與語言服務的 PHP 擴充功能套件。

{
  "extensionPack": ["xdebug.php-debug", "zobo.php-intellisense"]
}

安裝擴充功能套件時,VS Code 現在也會安裝其擴充功能相依項。

擴充功能套件應分類在 Marketplace 的 Extension Packs 類別中。

{
  "categories": ["Extension Packs"]
}

若要建立擴充功能套件,您可以使用 yo code Yeoman 產生器並選擇 New Extension Pack 選項。您可以選擇以您目前 VS Code 執行個體中已安裝的擴充功能集合作為套件的基礎。透過這種方式,您可以輕鬆建立包含您最愛擴充功能的套件,將其發布到 Marketplace 並與他人分享。

擴充功能套件不應與其綑綁的擴充功能有任何功能上的相依關係,且綑綁的擴充功能應能獨立於套件之外進行管理。如果一個擴充功能對另一個擴充功能有相依性,該相依性應使用 extensionDependencies 屬性進行宣告。

擴充功能解除安裝 Hook

如果您的擴充功能在從 VS Code 解除安裝時需要進行清理作業,您可以在擴充功能的 package.json 中的 scripts 區塊下,為解除安裝 Hook vscode:uninstall 註冊一個 node 指令碼。

{
  "scripts": {
    "vscode:uninstall": "node ./out/src/lifecycle"
  }
}

當擴充功能從 VS Code 完全解除安裝時(即解除安裝後重新啟動 VS Code 時),該指令碼就會執行。

注意:僅支援 Node.js 指令碼。

實用的 Node 模組

npmjs 上有幾個 Node.js 模組可協助編寫 VS Code 擴充功能。您可以將這些模組包含在擴充功能的 dependencies 區塊中。

後續步驟

若要進一步了解 VS Code 的擴充性模型,請嘗試閱讀這些主題:

© . This site is unofficial and not affiliated with Microsoft.