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
每月下载次数 56
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 模板。
依赖关系
~5–14MB
~162K SLoC