使用提议的API

在Visual Studio Code中,我们非常重视扩展API的兼容性。我们尽最大努力避免破坏API的更改,扩展作者可以期望已发布的扩展继续工作。然而,这给我们带来了很大的限制:一旦我们引入了一个API,我们就不能再轻易地更改它。

提议的API为我们解决了问题。提议的API是一组在VS Code中实现但未像稳定API那样公开给公众的不稳定API。它们可能会发生变化仅在Insiders版本中可用,并且不能在已发布的扩展中使用。尽管如此,扩展作者可以在本地开发中测试这些新API,并为VS Code团队提供反馈以迭代API。最终,提议的API会进入稳定API,并可供所有扩展使用。

使用提议的API

这些是在本地扩展开发中测试提议的API的步骤:

  • 使用 Insiders 版本的 VS Code。
  • 在你的 package.json 中,添加 "enabledApiProposals": [""]
  • 将相应的vscode.proposed..d.ts文件复制到项目的源代码位置。

@vscode/dts CLI 工具允许您快速下载最新的 vscode.proposed..d.ts 用于扩展开发。它会根据您 package.json 文件中列出的提案下载定义文件。

> npx @vscode/dts dev
Downloading vscode.proposed.languageStatus.d.ts
To:   /Users/Me/Code/MyExtension/vscode.proposed.languageStatus.d.ts
From: https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.languageStatus.d.ts
Read more about proposed API at: https://code.visualstudio.com/api/advanced-topics/using-proposed-api

这里有一个使用提议的API的示例:proposed-api-sample

提议的API不兼容性

在主分支上,vscode.proposed..d.ts 始终与 vscode.d.ts 兼容。然而,当你在使用 @types/vscode 的项目中添加 vscode.proposed..d.ts 时,最新的 vscode.proposed..d.ts 可能与 @types/vscode 中的版本不兼容。

您可以通过以下任一方式解决此问题:

  • 移除对@types/vscode的依赖,并使用npx @vscode/dts mainmicrosoft/vscode主分支下载vscode.d.ts
  • 使用 @types/vscode@ 并使用 npx @vscode/dts dev microsoft/vscode 的旧分支下载 vscode.proposed..d.ts。但是,请注意,API 可能在最新版本的 VS Code Insiders 中已更改。

使用提议的API共享扩展

虽然您无法在市场上使用提议的API发布扩展程序,但您仍然可以通过打包和分享您的扩展程序与同行共享。

要打包您的扩展,您可以运行vsce package来创建扩展的VSIX文件。然后,您可以与他人共享此VSIX文件,以便在他们的VS Code中安装扩展。

要从VSIX文件安装扩展,您需要进入扩展视图,选择...省略号查看和更多操作按钮,然后选择从VSIX安装

选择从VSIX安装菜单项在下面的短视频中展示。

演示显示用户进入扩展视图以找到从VSIX安装的菜单项

对于使用提议API的扩展,还有几个步骤来启用您的扩展。从VSIX安装后,您需要退出并从命令行重新启动VS Code Insiders,使用code-insiders . --enable-proposed-api=在您的项目文件夹中。

如果您希望设置您的扩展程序使用提议的API在每次启动VS Code Insiders时始终可用,您可以运行首选项:配置运行时参数命令来编辑.vscode-insiders/argv.json文件,以设置启用的扩展程序列表。

{
    ...
    "enable-proposed-api": ["<YOUR-EXTENSION-ID>"]
}