我目前正在研究VS代码扩展,并结合一个代码生成项目。虽然我知道VS代码API相当成熟,允许对文档进行扩展操作,但我不知道如何在扩展之外这样做。
有没有办法在vscode之外远程执行vs代码JavaScript API,这反过来又会驱动GUI。
我正在努力弄清楚我是否可以做以下任何一件事:
基本上,vs代码的远程控制驱动有哪些选择?
发布于 2019-11-26 04:41:10
我正在处理的编辑器扩展也面临着类似的问题。
我强烈建议收听VSCode API之外的文件更改。这样,您的大部分代码就不会绑定到特定的编辑器。我还很难使用名为VSCode的createFileSystemWatcher API,因为它没有捕获所有的更改。
激活后,使用文件监视程序库运行子进程。我建议使用乔基达尔 --它与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')
})对于任何文件更改,它都可以触发您所选择的操作。
发布于 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更改,这些脚本也会中断。如果可能的话最好走延伸路线。
https://stackoverflow.com/questions/59007935
复制相似问题