VSCode扩展位置变量

时间:2018-08-03 10:19:50

标签: visual-studio-code vscode-extensions

在我正在编写的扩展中,我想重新定义工作区中的现有设置,以指向要与扩展一起打包的脚本。例如,在Mac上,此脚本位于~/.vscode/extensions/publisher.name.version/script中。

如果我假设扩展程序存在,那么在我的激活函数中,我可以使用

更新该值
export async function activate(context: vscode.ExtensionContext) {
  const home = process.env.HOME;
  const execLocation = home + "/.vscode/extensions/publisher.name.version/script";
  ...

,然后更新工作区设置。

但是-我想访问本地安装的扩展程序位置以及扩展程序的ID和版本-我无法在VSCode中找到正确的设置来执行此操作。如果有人知道正确的环境变量,以便我可以访问它们,我将不胜感激。

我知道可以使用选项--extensionHomePath从命令行调用代码-我不确定如何以编程方式访问此变量。

我也不知道如何从context参数中找到版本,发布者和名称-显然我从package.json文件中知道了这些,但是能够以编程方式访问它们会很好如果可能的话。

1 个答案:

答案 0 :(得分:1)

您可以通过ExtensionContextasAbsolutePath()方法获得该信息。
此方法可为您提供给定相对路径(相对于项目根目录)的资源的绝对路径。

因此,我建议您将代码更改为以下内容:

export async function activate(context: vscode.ExtensionContext) {
    const execLocation = context.asAbsolutePath("script");
    console.log("Absolute exec location: " + execLocation);