扩展程序是否需要其他扩展程序并从中调用函数?

时间:2018-04-08 15:21:20

标签: visual-studio-code vscode-extensions

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

1 个答案:

答案 0 :(得分:4)

是的,这可以通过extensions API实现 - 扩展程序可以通过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;
}

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

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

console.log(importedApi.mul(42, 1));

VSCode已知的所有扩展名列表也可通过extensions.all获得。