如何在不同的扩展之间触发和接收事件

How to fire and receive an event between different extensions

我正在尝试向其他扩展程序广播一个事件,任何订阅该事件的扩展程序都会在收到该事件时执行一些指定的工作,并对触发该事件的扩展程序做出响应。

那么是否有公开的 vscode API 可以做到这一点?或者有什么简单的方法吗?

扩展可以通过几种方式进行通信:

  • 使用commands。一个扩展可以调用另一个扩展的命令

  • 使用扩展名 APIs。为此,Extension1 returns 它来自 activate 方法的 api。然后 Extension2 可以使用 extensions.extensions.getExtension('extension1.id') 获取它并使用 .exports 对象调用 API。

在这两种情况下,extension2 都应该在其 package.json

中使用 extensionDependencies 声明它依赖于 extension1