首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VS代码API -远程调用

VS代码API -远程调用
EN

Stack Overflow用户
提问于 2019-11-23 13:03:56
回答 2查看 983关注 0票数 3

我目前正在研究VS代码扩展,并结合一个代码生成项目。虽然我知道VS代码API相当成熟,允许对文档进行扩展操作,但我不知道如何在扩展之外这样做。

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

我正在努力弄清楚我是否可以做以下任何一件事:

  • 通过API cli执行API JavaScript代码
  • 在扩展中运行web服务器/套接字以侦听来自外部系统的事件,并相应地执行JS API
  • 如果没有套接字/rest服务器,我应该听取文件系统的更改并作出相应的反应吗?

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

EN

回答 2

Stack Overflow用户

发布于 2019-11-26 04:41:10

我正在处理的编辑器扩展也面临着类似的问题。

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

激活后,使用文件监视程序库运行子进程。我建议使用乔基达尔 --它与VSCode内部使用的库相同,但具有更广泛的API访问权限。

代码语言:javascript
复制
// 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')
})

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

票数 2
EN

Stack Overflow用户

发布于 2019-11-26 04:47:25

如果VS代码扩展可以实现您所追求的一切,那么最简单的方法就是让扩展被外部驱动。VS代码扩展在node.js环境中运行,因此它们可以使用几乎任何其他机制与外部世界进行启动http服务器在指定的管道上听或通信。

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59007935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档