擴充套件清單
每個 Visual Studio Code 擴充套件都需要一個名為 package.json 的清單檔案,位於擴充套件目錄結構的根目錄。
欄位
| 名稱 | 必填 | 型別 | 詳細資訊 |
|---|---|---|---|
|
是 | 字串 |
擴充套件的名稱 - 應全部小寫且不含空格。 該名稱在 Marketplace 中必須是唯一的。 |
version |
是 | 字串 |
相容 SemVer 的版本。 |
publisher |
是 | 字串 |
釋出者識別符號 |
engines |
是 | 物件 |
一個物件,至少包含 vscode 鍵,該鍵與擴充套件 相容 的 VS Code 版本匹配。不能是 *。例如:^0.10.5 表示與最低 VS Code 版本 0.10.5 相容。 |
license |
字串 |
請參閱 npm 文件。如果擴充套件根目錄中有一個 LICENSE 檔案,則 license 的值應為 "SEE LICENSE IN <filename>"。 |
|
displayName |
字串 |
在 Marketplace 中使用的擴充套件的顯示名稱。 顯示名稱在 Marketplace 中必須是唯一的。 |
|
描述 |
字串 |
對您的擴充套件是什麼以及它做什麼的一個簡短描述。 | |
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 |
陣列 |
一個 **關鍵字** 陣列,便於查詢擴充套件。這些關鍵字與 Marketplace 上的其他擴充套件 **標籤** 一起顯示。此列表目前限制為 30 個關鍵字。 | |
galleryBanner |
物件 |
有助於格式化 Marketplace 標頭以匹配您的圖示。有關詳細資訊,請參閱下方。 | |
preview |
布林值 |
將擴充套件設定為在 Marketplace 中標記為預覽版。 | |
main |
字串 |
擴充套件的入口點。 | |
browser |
字串 |
您的 Web 擴充套件 的入口點。 | |
contributes |
物件 |
一個描述擴充套件 貢獻 的物件。 | |
activationEvents |
陣列 |
此擴充套件的 啟用事件 陣列。 | |
badges |
陣列 |
將在 Marketplace 擴充套件頁面的側邊欄中顯示的已 **批准** 的徽章陣列。每個徽章是一個包含 3 個屬性的物件:url(徽章的圖片 URL)、href(使用者點選徽章時將跟隨的連結)和 description。 |
|
Markdown |
字串 |
控制在 Marketplace 中使用的 Markdown 渲染引擎。可以是 github(預設)或 standard。 |
|
qna |
marketplace(預設)、string、false |
控制 Marketplace 中的 **問答** 連結。設定為 marketplace 以啟用預設的 Marketplace 問答站點。設定為字串以提供自定義問答站點的 URL。設定為 false 以完全停用問答。 |
|
sponsor |
物件 |
指定使用者可以贊助您的擴充套件的位置。這是一個只有一個屬性 url 的物件,該屬性連結到使用者可以贊助您的擴充套件的頁面。 |
|
dependencies |
物件 |
您的擴充套件所需的任何執行時 Node.js 依賴項。與 npm 的 dependencies 完全相同。 |
|
devDependencies |
物件 |
您的擴充套件所需的任何開發 Node.js 依賴項。與 npm 的 devDependencies 完全相同。 |
|
extensionPack |
陣列 |
一個包含可以一起安裝的擴充套件 ID 的陣列。擴充套件的 ID 始終是 ${publisher}.${name}。例如:vscode.csharp。 |
|
extensionDependencies |
陣列 |
一個包含此擴充套件所依賴的擴充套件 ID 的陣列。擴充套件的 ID 始終是 ${publisher}.${name}。例如:vscode.csharp。 |
|
extensionKind |
陣列 |
一個數組,指示擴充套件在遠端配置中應在何處執行。值為 ui(在本地執行)、workspace(在遠端計算機上執行)或兩者兼有,順序決定了首選項。例如:[ui, workspace] 表示擴充套件可以在任一位置執行,但更傾向於在本地機器上執行。有關詳細資訊,請參閱 此處。 |
|
scripts |
物件 |
與 npm 的 scripts 完全相同,但包含額外的 VS Code 特定欄位,例如 vscode:prepublish 或 vscode:uninstall。 |
|
icon |
字串 |
圖示的路徑,至少為 128x128 畫素(Retina 螢幕為 256x256 畫素)。 | |
pricing |
字串 |
擴充套件的定價資訊。允許的值:Free、Trial。預設值:Free。有關詳細資訊,請參閱 此處。 |
|
capabilities |
物件 |
一個描述擴充套件在有限工作區中的功能的***capability***的物件:untrustedWorkspaces、virtualWorkspaces。 |
另請參閱 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 中提供相對路徑的圖片連結。
以下是一些示例
提供良好的顯示名稱和描述。這對於 Marketplace 和產品顯示很重要。這些字串也用於 VS Code 中的文字搜尋,擁有相關的關鍵字將非常有幫助。
"displayName": "Word Count",
"description": "Markdown Word Count Example - reports out the number of words in a Markdown file.",
圖示和對比鮮明的橫幅顏色在 Marketplace 頁面標題上看起來很棒。theme 屬性是指橫幅中使用的字型 - dark 或 light。
{
"icon": "images/icon.png",
"galleryBanner": {
"color": "#C80000",
"theme": "dark"
}
}
您可以設定幾個可選連結(bugs、homepage、repository),這些連結顯示在 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 屬性 |
|---|---|
| 問題 | bugs:url |
| 儲存庫 | repository:url |
| 主頁 | 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 Languages。Language 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 主題、著色器和程式碼片段,並建立新的擴充套件。執行生成器時,它會為每個選項建立一個完整的獨立擴充套件包。但是,通常更方便擁有一個合併多個貢獻的單一擴充套件。例如,如果您正在為新語言新增支援,您會希望同時為使用者提供語言定義(包括著色)以及程式碼片段,甚至可能還有除錯支援。
要合併擴充套件貢獻,請編輯現有的擴充套件清單 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 Languages 和 Snippets,以便在 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 還會安裝其擴充套件依賴項。
擴充套件包應在 Extension Packs Marketplace 類別中進行分類。
{
"categories": ["Extension Packs"]
}
要建立擴充套件包,您可以使用 yo code Yeoman 生成器並選擇 **New Extension Pack** 選項。有一個選項可以使用您當前在 VS Code 例項中安裝的擴充套件集來填充包。這樣,您就可以輕鬆建立包含您喜歡的擴充套件的擴充套件包,將其釋出到 Marketplace,並與他人共享。
擴充套件包不應與其捆綁的擴充套件有任何功能性依賴關係,並且捆綁的擴充套件應獨立於包進行管理。如果一個擴充套件依賴於另一個擴充套件,則該依賴項應使用 extensionDependencies 屬性宣告。
擴充套件解除安裝鉤子
如果您的擴充套件在從 VS Code 解除安裝時需要進行清理,您可以在擴充套件的 package.json 的 scripts 部分下,為解除安裝鉤子 vscode:uninstall 註冊一個 node 指令碼。
{
"scripts": {
"vscode:uninstall": "node ./out/src/lifecycle"
}
}
當擴充套件在 VS Code 中完全解除安裝後(即在擴充套件解除安裝後重啟 VS Code 時),此指令碼將被執行。
注意: 只支援 Node.js 指令碼。
有用的 Node 模組
npmjs 上有幾個 Node.js 模組可以幫助您編寫 VS Code 擴充套件。您可以將它們包含在擴充套件的 dependencies 部分。
- vscode-nls - 支援外部化和本地化。
- vscode-uri - VS Code 及其擴充套件使用的 URI 實現。
- jsonc-parser - 一個掃描器和容錯解析器,用於處理帶或不帶註釋的 JSON。
- request-light - 一個輕量級的 Node.js 請求庫,支援代理。
- vscode-extension-telemetry - VS Code 擴充套件的一致遙測報告。
- vscode-languageclient - 輕鬆整合符合 語言伺服器協議 的語言伺服器。
後續步驟
要了解有關 VS Code 可擴充套件性模型的更多資訊,請嘗試以下主題
- 貢獻點 - VS Code 貢獻點參考
- 啟用事件 - VS Code 啟用事件參考。
- 擴充套件 Marketplace - 詳細瞭解 VS Code 擴充套件 Marketplace。