Как обновить users settings.json в vscode с помощью пакетов расширений?

#visual-studio-code #vscode-settings #vscode-extensions

#visual-studio-code #vscode-расширения

Вопрос:

Я разработал vscode extension пакет VSCodeWebDeveloperExperiencePack, теперь я сталкиваюсь с конфликтом между некоторыми из них, например turbo console , и deploy , я написал руководство по настройке на странице расширения, как вы можете видеть ниже:

Предопределенные настройки, которые вы, возможно, захотите использовать:

  1. Пресса ctrl shift p
  2. Тип settings
  3. нажмите Prefrences: Open settings (JSON) , чтобы открыть файл settings.json
  4. добавьте эти строки настроек:
   "workbench.iconTheme": "material-icon-theme",
  "workbench.colorTheme": "Atom One Dark",
  "files.autoSave": "afterDelay",
  "editor.fontFamily": "Fira Code",
  "editor.fontLigatures": "",
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.fontSize": 16,
  "window.zoomLevel": 1,
  "sync.gist": "70a5fe700fe4e46aebdf678a5c1db398",
  "typescript.preferences.importModuleSpecifier": "non-relative",
  "local-history.exclude": [
    "**/.history/**",
    "**/.vscode/**",
    "**/node_modules/**",
    "**/typings/**",
    "**/out/**",
    "**/Code/User/**"
  ]
  

Кроме того, есть некоторые keybindings конфигурации, подобные приведенным ниже:

 [
  {
    "key": "ctrl shift alt l",
    "command": "bookmarks.jumpToNext",
    "when": "editorTextFocus"
  },
  {
    "key": "ctrl alt l",
    "command": "-bookmarks.jumpToNext",
    "when": "editorTextFocus"
  },
  {
    "key": "ctrl shift alt k",
    "command": "extension.deploy.listen"
  },
  {
    "key": "ctrl alt l",
    "command": "-extension.deploy.listen"
  }
]
  

Но я хочу сделать это возможным или показать пользователю выбор для выбора configure automatically , который при нажатии на него или при установке расширения помещает желаемую конфигурацию в user settings.json.

Я прочитал VSCode, но не смог решить проблему, например, я добавил это в свой ext-pack package.json :

   "contributes": {
    "configuration": {
      "title": "VsCode Web Developer Experience",
      "properties": {
        "editor.fontSize": {
          "type": "number",
          "default": 22,
          "description": "this will changes the font settings"
        }
      }
    }
  }
  

Комментарии:

1. Вы нашли способ решить эту проблему?

2. @Sebastian да, я обновил ответ

3. Добро пожаловать.

Ответ №1:

Я решил эту проблему на основе документов vscode, вот пример, который вы можете использовать:

  1. Поместите это в package.json zpack-package.json:
  "contributes": {
    "commands": [
      {
        "command": "zpack.updateConfig",
        "title": "Update Essentials Web Extension Pack (ZPack series) Config"
      }
    ]
  },
  
  1. Используйте это для запуска действия zpack-extension.ts:
 import * as vscode from "vscode";
import { extractAsKeyValue, GeneralObject } from "./util";
import { defaultSettings } from "./defaultSettings";

const updateUserSettings = async (settings: GeneralObject[]) => {
  settings.forEach(async setting => {
    const { key, value } = extractAsKeyValue(setting);
    await vscode.workspace
      .getConfiguration()
      .update(key, value, vscode.ConfigurationTarget.Global);
  });
};
export async function activate(context: vscode.ExtensionContext) {
  console.log(
    'Congratulations, your extension "Essentials Web Extension Pack (ZPack series)" is now active!'
  );
  let disposable = vscode.commands.registerCommand(
    "zpack.updateConfig",
    async () => {
      console.log(JSON.stringify(defaultSettings, null, 1));
      await updateUserSettings(defaultSettings);
      await vscode.window.showInformationMessage(
        "ZPack Config has been updated"
      );
    }
  );
  context.subscriptions.push(disposable);
}

export function deactivate() {}