1. 基本结构
json
{
"version": "2.0.0",
"tasks": [
{
"label": "Example Task",
"type": "shell",
"command": "echo Hello, VS Code!",
"group": "build",
"problemMatcher": []
}
]
}version: 任务配置的版本,VS Code 目前支持"2.0.0"。tasks: 任务列表,可以包含多个任务。
2. 常见字段
1) label
任务的名称,可以在 VS Code 任务列表中看到。
json
"label": "Build Project"2) type
任务的类型,决定任务的执行方式。
"shell": 运行 shell 命令(如 Bash、PowerShell)。"process": 运行外部程序(如 Python、CMake)。
json
"type": "shell"3) command
任务执行的命令,比如
make、npm install、python script.py。
json
"command": "make"4) args
命令的参数,可以将多个参数拆分为列表。
json
"args": ["-j4"]等同于:
sh
make -j45) group
任务分组,常用于快捷键触发:
"build": 构建任务(可以用Ctrl+Shift+B运行)。"test": 测试任务(可以用Run Test Task运行)。
json
"group": {
"kind": "build",
"isDefault": true
}isDefault: true表示该任务是默认构建任务(Ctrl+Shift+B)。
6) problemMatcher
用于解析编译器输出并在 VS Code "Problems" 面板中显示错误信息。
"$gcc": 适用于gcc/g++编译错误。"$tsc": 适用于 TypeScript 编译错误。
json
"problemMatcher": ["$gcc"]7) dependsOn
指定当前任务依赖的其他任务,会先执行依赖任务。
json
"dependsOn": ["Generate CMake"]8) detail
任务的详细描述。
json
"detail": "This task compiles the project using Make."在 VS Code 的 tasks.json 里,presentation 字段用于控制任务的终端显示方式,比如是否清除之前的输出、是否在后台运行等。它可以用来优化任务的可视化体验。
presentation 字段的常见配置
json
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"clear": true
}1) echo (是否回显命令)
true: 在终端显示执行的命令(默认)。false: 不显示执行的命令。
json
"echo": true💡 示例
sh
> make -j4
Compiling...如果 echo: false,不会显示 > make -j4,只会看到编译输出。
2) reveal (任务终端的显示方式)
"always": 总是显示任务终端(默认)。"silent": 任务执行时不会自动显示终端,除非有错误。"never": 任务终端完全隐藏。
json
"reveal": "always"💡 用法 如果任务是编译代码,你可能希望 "always" 以便查看进度。如果任务是后台运行的,比如启动服务器,使用 "silent" 或 "never" 可以避免干扰。
3) focus (是否聚焦终端)
true: 任务启动时自动聚焦终端。false: 任务启动时不改变焦点(默认)。
json
"focus": false"💡 示例 当 focus: true 时,任务运行后终端窗口会自动获取焦点,比如:
sh
> Starting build...当 focus: false 时,终端运行任务但不会干扰你的当前窗口。
4) panel (多个任务共享终端)
"shared": 任务终端是共享的(多个任务共用)。"dedicated": 每个任务都有自己的终端。"new": 每次运行任务都会打开一个新的终端。
json
"panel": "shared"💡 示例 如果你运行多个任务,如 cmake .. 和 make,"shared" 让它们在同一个终端显示,"dedicated" 让它们分开。
5) clear (是否清除终端)
true: 运行任务前清除终端内容(默认false)。false: 继续在已有的终端里追加输出。
json
"clear": true💡 示例 如果 clear: true,每次运行任务都会清空终端,避免旧日志干扰。