从 vs 代码扩展更新 user/workspace 设置

Update user/workspace settings from vs code extension

我正在尝试从我的 vs 代码扩展中更新 setting.json,我想添加以下代码

 "files.associations": {
        "*.app": "auraComponent"
    }

换句话说,我想将以下键值对从扩展添加到将要安装我的应用程序的用户

所以我尝试将下面的代码放入 extension.js 但它没有更新设置。

import { ConfigurationTarget, workspace } from 'vscode';

const configuration = workspace.getConfiguration('files.associations');
configuration.update('.app', 'auraComponent', ConfigurationTarget.Global).then(() => {
    // take action here
});

有人可以建议我是否使用正确的方法来更新用户或工作区设置,以及 extension.js 中的代码是否会自动执行。

更新

我添加了 extension.js 并包含了 mark 在他的回答中提到的 js 代码

并如下更新我的 package.json

"main": "./extension",
"activationEvents": [
    "*"
],

如果我 运行 我的扩展程序处于调试模式,那么它可以正常工作但不能实时工作。

无论是否有 pre-existing files.association 设置,下面的方法都有效。如果已经有一个,新的关联将被添加到它(因此可能位于设置文件末尾以外的其他地方 - 否则一个全新的 files.associations 设置将被添加到 settings.json 文件..

const fileConfiguration = vscode.workspace.getConfiguration('files');
const associations = fileConfiguration.get('associations');

associations['*.app'] = "auraComponent";

fileConfiguration.update('associations', associations, vscode.ConfigurationTarget.Global).then(() => {

    // take action here
});

改编自

正如那里所解释的那样,您真正想要更新的是 associations 对象,即要更新的值。 "*.app": "auraComponent 不是配置键。 files.associations 是键,有一个对象 {...} 是它的值。