本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

扩展清单

每个Visual Studio Code扩展都需要一个清单文件package.json在扩展目录结构的根目录。

字段

名字 必填 类型 详情
名字 输入: Y 字符串 扩展名称 - 应该全部小写且没有空格。
名称必须在市场中唯一。
版本 输入: Y 字符串 SemVer 兼容版本。
出版商 输入: Y 字符串 出版者标识符
发动机 输入: Y 对象 一个包含至少Visual Studio Code key 匹配扩展 兼容 的 VS Code 版本。不能是 输入:*例如:^0.10.5表示兼容 VS Code 最低版本为0.10.5输入:.
许可证 字符串 参考 npm 的文档。如果你确实有 许可证在你的扩展根目录下的文件,值为许可证应该是“见 输入:.
显示名称 字符串 在市场中使用的扩展显示名称。
显示名称必须在市场中唯一。
描述 字符串 简要描述您的扩展是什么以及它的功能。
类别 字符串[] 您希望使用的扩展类别。允许的值:[编程语言, 代码片段, 代码检查工具, 主题, 调试器, 格式化工具, 键盘映射, 版本控制系统提供者, 其他, 扩展包, 语言包, 数据科学, 机器学习, 可视化, 笔记本, 教育, 测试]
关键词 数组 一组关键词,以便更容易找到该扩展。这些关键词与其他扩展Tab一起包含在市场中。目前,此列表最多限制为30个关键词。
画廊横幅 对象 帮助格式化市场标题以匹配您的图标。详情如下。
预览 布尔 将扩展设置为在市场中标记为预览。
主要 字符串 您扩展的入口点。
浏览器 字符串 你的网页扩展的入口点。
贡献 对象 一个描述该扩展贡献的物体。
激活事件 数组 此扩展的激活事件数组。
徽章 数组 批准的徽章,用于在Marketplace扩展页面的侧栏中显示。每个徽章都是一个包含3个属性的对象:对不起,我无法处理这个请求。徽章的图像网址链接用户点击徽章时将遵循的链接描述输入:.
标记 字符串 控制市场中使用的Markdown渲染引擎。或者github(默认)或标准输入:.
问答 市场(默认)字符串 控制 问答 链接在市场中。设置为 市场启用默认的Marketplace问答网站。设置为一个字符串以提供自定义问答网站的URL。设置为完全禁用问答功能。
赞助商 对象 指定用户可以从哪里赞助您的扩展。这是一个具有单个属性的对象对不起,我无法处理这个请求。,链接到一个用户可以赞助您的扩展页面。
依赖关系 对象 你的扩展需要的任何运行时Node.js依赖。完全相同于npm的依赖关系输入:.
开发依赖项 对象 任何开发Node.js依赖项,您的扩展需要。完全相同于npm的开发依赖项输入:.
扩展包 数组 一个可以一起安装的扩展ID数组。扩展的ID总是${出版者}.${名称}例如:vscode.csharp输入:.
扩展依赖 数组 一个包含此扩展所依赖的扩展ID的数组。扩展的ID始终是${出版者}.${名称}例如:vscode.csharp输入:.
扩展类型 数组 一个数组,指示在远程配置中扩展应运行的位置。值是用户界面(本地运行)工作区(在远程机器上运行)或两者都运行,以顺序设置优先级。例如:[用户界面,工作区] 表示该扩展可以在任意位置运行,但更喜欢在本地机器上运行。请参阅 此处 了解更多信息。
脚本 对象 完全相同于 npm 的 脚本 但带有额外的 VS Code 特定字段,例如 vscode:prepublishvscode:uninstall.
图标 字符串 路径到至少128x128像素(视网膜屏幕为256x256)的图标。
定价 字符串 该扩展的价格信息。允许的值:免费试用默认:免费。请参阅此处获取更多详情。
能力 对象 一个描述扩展在有限工作区中的功能的对象:不受信任的工作区虚拟工作区输入:.

另外查看 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"
}

市场展示技巧

这里有一些提示和建议,使您的扩展在 VS Code 市场上展示得更加美观。

始终使用最新版本vsce所以npm install -g @vscode/vsce确保你拥有它。

请将以下网页文本翻译成中文,只输出翻译结果,不输出任何其他解释,若文本已经是中文了,则直接用中文复述一遍。翻译结果保持格式不变。输入:Have a自述文件.md在您的扩展根文件夹中创建一个Markdown文件,我们将在扩展详情的主体中包含其内容(在市场中)。您可以在其中提供相对路径图像链接。自述文件.md输入:.

以下是一些示例:

  1. 字数统计
  2. MD 工具

提供一个良好的显示名称和描述。这对于市场和产品展示都很重要。这些字符串还用于 VS Code 中的文本搜索,拥有相关的关键词会很有帮助。

    "displayName": "字数统计",
    "description": "Markdown字数统计示例 - 报告Markdown文件中的字数。",

图标和对比鲜明的横幅颜色在市场页面标题上看起来很棒。主题属性是指横幅中使用的字体 -输入:.

{
  "图标": "images/icon.png",
  "画廊横幅": {
    "颜色": "#C80000",
    "主题": "暗色"
  }
}

有多个可选链接 (虫子主页仓库) 您可以设置并这些将在资源部分的市场中显示。

{
  "许可": "请参阅LICENSE.txt中的许可",
  "主页": "https://github.com/microsoft/vscode-wordcount/blob/main/README.md",
  "错误": {
    "网址": "https://github.com/microsoft/vscode-wordcount/issues",
    "电子邮件": "sean@contoso.com"
  },
  "仓库": {
    "类型": "git",
    "网址": "https://github.com/microsoft/vscode-wordcount.git"
  }
}
市场资源链接 package.json 属性
问题 错误:URL
仓库 仓库:URL
主页 主页
许可证 许可证

设置一个类别为您的扩展。相同的扩展类别在市场中将它们分组在一起,可以改进过滤和发现。

注意: 只能使用对您的扩展有意义的值。允许的值是 [编程语言, 代码片段, 代码检查工具, 主题, 调试器, 格式化工具, 键盘映射, 版本控制系统提供者, 其他, 扩展包, 语言包, 数据科学, 机器学习, 可视化, 笔记本, 教育, 测试]. 使用编程语言用于诸如语法高亮和代码补全等通用语言功能。类别语言包保留用于显示语言扩展(例如,本地化的保加利亚语)。

{
  "分类": ["代码检查工具", "编程语言", "其他"]
}

已批准徽章

由于安全问题,我们只允许来自可信服务的徽章。

我们允许以下 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
  • codeco.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上提交问题,我们会很乐意查看。

合并扩展贡献

你的代码生成器可以轻松地将 TextMate 主题、颜色化和片段打包并创建新的扩展。当运行生成器时,它会为每个选项创建一个完整的独立扩展包。然而,通常将多个贡献合并到一个扩展中会更方便。例如,如果您正在添加对新语言的支持,您希望向用户提供语言定义、颜色化以及片段,甚至调试支持。

要合并扩展贡献,请编辑现有的扩展清单package.json并添加新的贡献和相关文件。

以下是扩展配置文件,包括LaTex语言定义(语言标识符和文件扩展名)、颜色化语法), 和片段。

{
  "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"
      }
    ]
  }
}

注意扩展清单类别属性现在包括两者编程语言片段以便在市场中轻松发现和筛选。

提示: 确保您的合并贡献使用相同的标识符。在上面的示例中,所有三个贡献都使用"latex"作为语言标识符。这告诉 VS Code 颜色化工具 (语法) 和片段是用于 LaTeX 语言,并且在编辑 LaTeX 文件时将生效。

扩展包

您可以将单独的扩展捆绑在一起,放在扩展包中。扩展包是一组将一起安装的扩展。这使得可以轻松地与其他用户分享您喜欢的扩展,或者为特定场景(如PHP开发)创建一组扩展,以帮助PHP开发人员快速开始使用VS Code。

扩展包使用 扩展包属性在package.json文件。

例如,这里有一个包含调试器和语言服务的PHP扩展包:

{
  "extensionPack": ["xdebug.php调试", "zobo.php智能感知"]
}

在安装扩展包时,VS Code 现在也会安装其扩展依赖项。

扩展包应归类于扩展包市场类别:

{
  "分类": ["扩展包"]
}

要创建一个扩展包,您可以使用你的代码 Yeoman 生成器并选择 新的扩展包 选项。有一个选项可以将你当前在 VS Code 实例中安装的扩展集初始化到扩展包中。通过这种方式,你可以轻松创建一个包含你最喜欢的扩展的扩展包,发布到市场,并与他人分享。

扩展包与其捆绑的扩展之间不应有任何功能依赖,捆绑的扩展应能够独立于扩展包进行管理。如果一个扩展依赖于另一个扩展,该依赖应使用扩展依赖属性。

扩展卸载挂钩

如果您的扩展在从 VS Code 卸载时需要进行一些清理工作,您可以注册一个节点脚本到卸载挂钩vscode:卸载脚本在扩展的 package.json 中的 section。

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

此脚本在 VS Code 重启(关闭并启动)后,扩展被卸载时执行,即 VS Code 重新启动时,扩展被完全卸载时。

注意:仅支持 Node.js 脚本。

有用的 Node 模块

有多个Node.js模块可以在npmjs上找到,以帮助编写VS Code扩展。您可以在扩展中包含这些模块。依赖关系部分。

下一步

要了解更多关于 VS Code 可扩展性模型的信息,请尝试这些主题: