擴充套件清單
每個 Visual Studio Code 擴充套件在其擴充套件目錄結構的根目錄下都需要一個清單檔案 package.json
。
欄位
名稱 | 必需 | 型別 | 詳細資訊 |
---|---|---|---|
|
Y | 字串 |
擴充套件的名稱 - 應該全部小寫,沒有空格。 此名稱在 Marketplace 中必須是唯一的。 |
版本 |
Y | 字串 |
SemVer 相容版本。 |
釋出者 |
Y | 字串 |
釋出者識別符號 |
引擎 |
Y | 物件 |
一個物件,至少包含 vscode 鍵,其值與擴充套件程式相容的 VS Code 版本匹配。不能為 * 。例如:^0.10.5 表示與最低 VS Code 版本 0.10.5 相容。 |
許可證 |
字串 |
請參閱 npm 的文件。如果您的擴充套件根目錄下確實有 LICENSE 檔案,則 license 的值應為 "SEE LICENSE IN <filename>" 。 |
|
displayName |
字串 |
在 Marketplace 中使用的擴充套件顯示名稱。 顯示名稱在 Marketplace 中必須是唯一的。 |
|
描述 |
字串 |
對您的擴充套件是什麼以及做什麼的簡短描述。 | |
類別 |
string[] |
您要用於擴充套件的類別。允許的值:[Programming Languages, Snippets, Linters, Themes, Debuggers, Formatters, Keymaps, SCM Providers, Other, Extension Packs, Language Packs, Data Science, Machine Learning, Visualization, Notebooks, Education, Testing] |
|
關鍵詞 |
陣列 |
一個關鍵字陣列,以便更容易找到擴充套件。這些關鍵字與 Marketplace 上的其他擴充套件標籤一起包含在內。此列表目前限制為 30 個關鍵字。 | |
galleryBanner |
物件 |
有助於格式化 Marketplace 標頭以匹配您的圖示。詳見下文。 | |
預覽 |
布林值 |
將擴充套件設定為在 Marketplace 中標記為預覽。 | |
主要 |
字串 |
您的擴充套件入口點。 | |
瀏覽器 |
字串 |
您的Web 擴充套件的入口點。 | |
貢獻 |
物件 |
一個描述擴充套件貢獻的物件。 | |
啟用事件 |
陣列 |
此擴充套件的啟用事件陣列。 | |
徽章 |
陣列 |
用於在 Marketplace 擴充套件頁面的側邊欄中顯示的批准徽章陣列。每個徽章都是一個物件,包含 3 個屬性:url 用於徽章影像 URL,href 用於使用者點選徽章時將跟隨的連結,以及 description 。 |
|
Markdown |
字串 |
控制 Marketplace 中使用的 Markdown 渲染引擎。可以是 github (預設)或 standard 。 |
|
問答 |
marketplace (預設)、string 、false |
控制 Marketplace 中的問答連結。設定為 marketplace 以啟用預設的 Marketplace 問答站點。設定為字串以提供自定義問答站點的 URL。設定為 false 以完全停用問答。 |
|
贊助商 |
物件 |
指定使用者可以贊助您的擴充套件的位置。這是一個帶有單個屬性 url 的物件,該屬性連結到使用者可以贊助您的擴充套件的頁面。 |
|
依賴項 |
物件 |
您的擴充套件所需的任何執行時 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] 表示擴充套件可以在任一位置執行,但更傾向於在本地機器上執行。有關更多詳細資訊,請參閱此處。 |
|
指令碼 |
物件 |
與 npm 的 scripts 完全相同,但包含額外的 VS Code 特定欄位,例如 vscode:prepublish 或 vscode:uninstall。 |
|
圖示 |
字串 |
圖示路徑,至少 128x128 畫素(Retina 螢幕為 256x256)。 | |
定價 |
字串 |
擴充套件的定價資訊。允許的值:Free 、Trial 。預設值:Free 。有關更多詳細資訊,請參閱此處。 |
|
功能 |
物件 |
一個描述擴充套件在受限工作區中能力的物件: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 的資源部分下。
{
"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 |
許可證 | 許可證 |
為您的擴充套件設定一個 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(僅來自工作流)
- 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 上開啟一個問題,我們很樂意檢視。
組合擴充套件貢獻
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 檔案時將處於活動狀態。
擴充套件包
您可以將單獨的擴充套件捆綁到擴充套件包中。擴充套件包是一組將一起安裝的擴充套件。這使得與他人輕鬆共享您喜歡的擴充套件或為特定場景(如 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 生成器並選擇新建擴充套件包選項。有一個選項可以使用您當前在 VS Code 例項中安裝的擴充套件集來初始化該包。透過這種方式,您可以輕鬆地使用您喜歡的擴充套件建立擴充套件包,將其釋出到 Marketplace,並與他人共享。
擴充套件包不應與其捆綁的擴充套件有任何功能依賴關係,並且捆綁的擴充套件應獨立於該包進行管理。如果一個擴充套件依賴於另一個擴充套件,則應使用 extensionDependencies
屬性宣告該依賴關係。
擴充套件解除安裝鉤子
如果您的擴充套件在從 VS Code 解除安裝時需要進行一些清理工作,您可以在擴充套件的 package.json 的 scripts
部分下,將一個 node
指令碼註冊到解除安裝鉤子 vscode:uninstall
。
{
"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 可擴充套件性模型的更多資訊,請嘗試以下主題