#visual-studio-code #workspace #cli #cli-tool #template #json #duplicates

app vscode-workspace-gen

从模板生成 vscode 工作区文件

23 个版本 (稳定)

3.1.1 2024 年 6 月 3 日
3.0.0 2024 年 6 月 1 日
2.3.0 2024 年 5 月 28 日
1.7.0 2024 年 5 月 9 日
0.1.2 2024 年 3 月 30 日

命令行工具 中排名 121

Download history 242/week @ 2024-04-13 12/week @ 2024-04-20 201/week @ 2024-04-27 311/week @ 2024-05-04 118/week @ 2024-05-11 501/week @ 2024-05-18 186/week @ 2024-05-25 470/week @ 2024-06-01 26/week @ 2024-06-08 2/week @ 2024-06-15 6/week @ 2024-06-29 34/week @ 2024-07-06 22/week @ 2024-07-27

每月下载次数 56

MIT 许可证

43KB
1K SLoC

vscode-workspace-gen

一个用于从模板生成 vscode 工作区文件的命令行工具。

目标是解决 https://github.com/microsoft/vscode/issues/53557

vscode 设置和工作区文件存在大量的 JSON 重复。使用此工具,您可以指定要重用的 JSON 对象,然后引用它们而不是重复。

安装

cargo安装 vscode-workspace-gen

用法

一个实际场景可以是提取重复的 vscode 启动、格式化打印器和源映射设置。
为了本例的目的,我们将仅展示一些示例 JSON。

将您想要重用的每个对象添加到 gen.globals 部分。

{
    "gen.globals": {
        "numbers": {
            "one": 1,
            "two": 2,
            "three": 3
        }
    },
    "obj1": {
        "a": "@{numbers}"
    },
    "obj2": {
        "b": "@{numbers}"
    }
}

在您的模板上运行它
vscode-workspace-gen-t vscode.code-workspace.template

然后获取

{
    "obj1": {
        "a": {
          "one": 1,
          "two": 2,
          "three": 3
        }
    },
    "obj2": {
        "b": {
          "one": 1,
          "two": 2,
          "three": 3
        }
    }
}

语法

gen.description

您可以在模板对象中添加描述。它们不会出现在输出中。

"obj1": {
    "gen.description" : "Some field with some purpose"
}

内联扩展和嵌套扩展

内联扩展,@@{foo} 将扩展 foo 的内容到父对象中。
嵌套扩展,@{foo} 类似,但它不会丢弃 foo 的实际容器,并将其嵌套。

例如,给定 "list" : [10, 20, 30]

以下模板

    "obj": {
        "somelist1" : [1, 2, 3, "@{list}"],
        "somelist2" : [1, 2, 3, "@@{list}"]
    }

结果为

    "obj": {
        "somelist1" : [1, 2, 3, [10, 20, 30]],
        "somelist2" : [1, 2, 3, 10, 20, 30]
    }

gen.os

您可以仅在某些特定操作系统上使某些对象可用。

 "obj": {
    "gen.os" : [ "windows, "linux" ]
 }

如果运行在 macos 上,上述对象将不会包含在输出中。

配置

您可以创建一个 .vscode-workspace-gen.json 文件并更改一些设置。当前支持的设置

{
    "json_indent": 2,
    "output_filename": "vscode.code-workspace",
    "per_os_output_filenames": {
        "linux": "linux.code-workspace",
        "windows": "windows.code-workspace",
        "macos": "macos.code-workspace"
    }
}
  • json_indent 指定 JSON 输出的缩进量
  • output_filename 等同于传递 -c <output_filename>。虽然命令行具有优先级。
  • per_os_output_filenames 允许为每个操作系统生成输出。由于使用了 gen.os,每个文件都可能不同。此选项与 output_filename 不兼容。

环境变量替换

由于 vscode 不会在所有地方替换 ${env_var},我们支持以更一致的方式替换环境变量。\n 任何出现 $${env_var} 的都将被替换为环境变量的内容。这个解决方案解决了 msvc 启动器支持展开 ${env},而 LLDB 启动器不支持的问题。

Qt 方便之处

如果您将 --features qt 传递给 cargo install,您将有一些关于 Qt 的方便选项。目前,它添加了

  • --download_qtnatvis 下载包含调试 Qt 的美化打印器的 qt6.natvis
  • --create-default-vscode-workspace 创建一个适合 Qt 开发的 vscode 模板。

Build
Build
Build
No Maintenance Intended 请分叉并修复您的问题。

依赖关系

~5–14MB
~162K SLoC