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