分机可以要求其他分机并从中调用功能吗?

max*_*son 3 visual-studio-code vscode-extensions

我正在开发多种语言的扩展。我只想有一个核心扩展,然后将每种语言的代码都作为一个单独的扩展。是否有可能做到这一点?核心扩展本质上将需要能够识别出其他扩展程序已安装并调用其某些代码。

Gam*_*a11 5

是的,通过extensionsAPI应该可以实现-扩展可以从其activate()方法返回API :

export function activate(context: vscode.ExtensionContext) {
    let api = {
        sum(a, b) {
            return a + b;
        },
        mul(a, b) {
            return a * b;
        }
    };
    // 'export' public api-surface
    return api;
}
Run Code Online (Sandbox Code Playgroud)

然后另一个扩展可以通过getExtension()调用来检索和使用该API :

let mathExt = extensions.getExtension('genius.math');
let importedApi = mathExt.exports;

console.log(importedApi.mul(42, 1));
Run Code Online (Sandbox Code Playgroud)

VSCode已知的所有扩展的列表也可以通过访问extensions.all