VSCode 扩展位置变量
VSCode extensions location variable
在我正在编写的扩展中,我想重新定义工作区中的现有设置以指向我与扩展一起打包的脚本。例如,在 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
文件中知道这些但是能够访问会很好如果可能的话,以编程方式进行。
您可以通过 ExtensionContext
的 asAbsolutePath()
方法获取该信息。
此方法为您获取给定相对路径(关于您的项目根目录)的资源的绝对路径。
因此我建议您将代码更改为以下内容:
export async function activate(context: vscode.ExtensionContext) {
const execLocation = context.asAbsolutePath("script");
console.log("Absolute exec location: " + execLocation);
在我正在编写的扩展中,我想重新定义工作区中的现有设置以指向我与扩展一起打包的脚本。例如,在 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
文件中知道这些但是能够访问会很好如果可能的话,以编程方式进行。
您可以通过 ExtensionContext
的 asAbsolutePath()
方法获取该信息。
此方法为您获取给定相对路径(关于您的项目根目录)的资源的绝对路径。
因此我建议您将代码更改为以下内容:
export async function activate(context: vscode.ExtensionContext) {
const execLocation = context.asAbsolutePath("script");
console.log("Absolute exec location: " + execLocation);