I'm developing an extension for multiple languages. I'd like to have just a single core extension, and then make the code for each language a separate extension. Is it possible to do this? The core extension would essentially need to be able to recognize that the others are installed and call some of their code.
Yes, this should be possible via the extensions
API - extensions can return an API from their activate()
method:
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;
}
And another extension can then retrieve and use that API via a getExtension()
call:
let mathExt = extensions.getExtension('genius.math');
let importedApi = mathExt.exports;
console.log(importedApi.mul(42, 1));
A list of all extensions known to VSCode is also available via extensions.all
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With