VS 代码 API - 远程调用



我目前正在结合代码生成项目研究VS代码扩展。虽然我知道 VS 代码 API 相当成熟,允许在扩展内操作文档,但我无法弄清楚如何在扩展之外执行此操作。

有没有办法在vscode之外远程执行vs代码JavaScript API,这反过来将驱动GUI。

我正在尝试弄清楚我是否可以执行以下操作中的任何一项:

  • 通过 code cli 时执行 API JavaScript 代码
  • 在扩展中运行 Web 服务器/套接字以侦听来自外部系统的事件并相应地执行 JS API
  • 如果不是套接字/休息服务器,我应该监听文件系统更改并做出相应的反应吗?

基本上,VS代码的远程控制驱动有哪些选项?

我正在处理的编辑器扩展也遇到了类似的问题。

我强烈建议在VSCode API之外监听文件更改。这样,您的大部分代码就不会绑定到特定的编辑器。使用名为createFileSystemWatcher的VSCode API也遇到了更多困难,因为它没有捕获所有更改。

激活后,使用文件观察程序库运行子进程。我建议使用 chokidar - 它与 VSCode 内部使用的库相同,但对 API 具有更广泛的访问权限。

// get your workspace uri & root uri 
const workspaceRoots = vscode.workspace.workspaceFolders
if (!workspaceRoots || !workspaceRoots.length) {
  throw new Error('No workspace root path')
}
const workspaceRoot: vscode.WorkspaceFolder = workspaceRoots[0]
const rootUri = vscode.workspace.getWorkspaceFolder(workspaceUri);
// the action you want to trigger
const command = vscode.commands.registerCommand('YOUR_CUSTOM_COMMAND', yourCustomFunction)
// file watcher
const fsWatcher = chokidar.watch('watcher_name', {
  cwd: rootUri.uri.path,
  interval: 1000,
})
// listen to any add/update/delete fs events
fsWatcher.on('change', (path, event) => {
  vscode.commands.executeCommand('YOUR_CUSTOM_COMMAND')
})

在任何文件更改中,它都可以触发您选择的操作。

如果 VS Code 扩展可以实现您所追求的一切,那么最简单的方法是让扩展在外部驱动。VS Code 扩展在节点.js环境中运行,因此它们可以启动 http 服务器、侦听命名管道或使用几乎任何其他机制与外界通信。

还可以查看对测试扩展的 VS Code 支持,因为测试也仅使用标准 VS Code 扩展 API:https://code.visualstudio.com/api/working-with-extensions/testing-extension

对于 VS Code 本身的开发,有一些模拟用户操作的自动化脚本。如果你真的需要,我相信你可以将这些脚本用于你的用例,但是我不能说它会做多少工作。如果 UI 发生更改,这些脚本也会中断。如果可能的话,最好走延伸路线

最新更新