【发布时间】:2018-09-06 20:32:49
【问题描述】:
在 Visual Studio Code 扩展中,有没有办法在运行时获取扩展的设置(在 package.json 中定义)?我想获取一些值(例如 displayName)。
【问题讨论】:
标签: javascript node.js visual-studio-code vscode-extensions
在 Visual Studio Code 扩展中,有没有办法在运行时获取扩展的设置(在 package.json 中定义)?我想获取一些值(例如 displayName)。
【问题讨论】:
标签: javascript node.js visual-studio-code vscode-extensions
Visual Studio Code 扩展是用 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(或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');
【讨论】:
let packageJson: string = fs.readFileSync(path.resolve(__dirname, "../package.json"), "utf8"); let projectPackage: gist.IPackage = JSON.parse(packageJson); (我正在使用来自 (gist.github.com/iainreid820/5c1cc527fe6b5b7dba41fec7fe54bf6e) 的包的 TS 描述如果我需要做任何更复杂的事情,我会考虑阅读-pkg。谢谢!