有没有办法在运行时获取扩展的设置(在 package.json 中定义)?

Is there a way to get the extension's settings (defined in package.json) at runtime?

在 Visual Studio 代码扩展中,有没有办法在运行时获取扩展的设置(在 package.json 中定义)?我想获取一些值(例如 displayName)。

A Visual Studio代码扩展是用JavaScript编写的,与标准的Node脚本没有区别,所以一般来说你可以使用fs.readFile来阅读扩展清单和JSON.parse 读取它的值。

根据您的用例,可能会有更简单的选项。

要求()

要阅读您自己的分机 package.json,您只需使用 require()

示例:

// lib/extension.js
const meta = require('../package.json')

进口

使用 import 可以实现与上述相同的效果,至少在使用 TypeScript 时是这样。

示例

// src/extension.ts
import * as meta from '../package.json'

确保为 JSON 个文件添加类型声明

// src/index.d.ts
declare module '*.json' {
    const value: any;
    export default value;
}

节点依赖

最后但同样重要的是,您可以通过编程方式阅读 任何 扩展的 package.json。使用诸如 vscode-read-manifest, read-pkg (or read-pkg-up) 之类的 Node 包可以使它变得简单。

示例:

const readManifest = require('vscode-read-manifest');

// Async
(async () => {
    let manifest = await readManifest('ms-python.python');
})();

// Sync
let manifest = readManifest.sync('ms-python.python');