3

我正在开发 VS 代码的扩展(使用 javascript)。现在我需要安装 VS Code 的路径。windows有一种方法:

var child = require('child_process');
child.exec('reg query HKEY_CLASSES_ROOT\\*\\shell\\VSCode /v Icon', function (error, strOut, strError) { 
//some code...
})

但它仅在用户正确安装 VS Code 时才有效。如果这个文件夹是从其他机器上复制的(这意味着注册表中没有 VS Code),这个函数将失败。

另一方面,它根本无法在 Linux 或 OS X 上运行。

我想知道是否有可以提供帮助的 API(我什么也没找到),或者其他方式可以获得该路径。

4

4 回答 4

9

我不知道你为什么需要 VSCODE 的目录,但我需要我的扩展目录。它可以通过以下方式访问:

var myExtDir = vscode.extensions.getExtension ("publisher.name").extensionPath;

发布者和名称在 package.json 中的位置

于 2016-08-27T02:43:28.233 回答
4

VSCode 是使用 node.js 编写的,因此您可以访问计算机、用户和节点环境变量。

要获取 VSCode 的使用安装路径,您可以使用以下命令;

process.env.VSCODE_CWD

例如,如果我的扩展程序做的第一件事是; console.log(process.env.VSCODE_CWD)它会在调试控制台中打印出以下内容C:\Program Files\Microsoft VS Code(这是我安装 VSCode 的地方)。

于 2018-02-17T19:46:56.250 回答
3

您现在可以使用

const vscodeInstallPath = vscode.env.appRoot;
于 2020-07-30T03:47:42.797 回答
0

我想我会添加你自己找到的答案,以防其他人来寻找同样的东西。

path.dirname(require.main.filename);

在 Ubuntu 中返回(对我而言)

/usr/share/code/resources/app/out

在 Windows 中,返回

c:\Program Files\Microsoft VS Code\resources\app\out

它也应该返回适​​合 OSX 的东西。

这是包含 bootstrap.js 的文件夹,足以确定应用程序的安装位置(此实例中的默认位置)。

在我的例子中,我想要一个节点模块(vscode-ripgrep)的路径,它是作为 vscode 的一部分构建的,所以我必须更多地处理路径,但它可以完成工作。

于 2018-01-17T16:18:44.973 回答