VS Code
本质上而言是一个文本编辑器,是众多插件赋予它特殊功能。
本文介绍
tasks.json
和
launch.json
两个文件分别有什么作用以及如何配置
tasks.json
作用
tasks.json
文件是VS Code
中用于配置任务Tasks
的文件。这些任务可以是编译代码、运行测试、构建项目等自动化任务。
使用不同的编程语言可能有不同的开发流程,比如 C/C++ 就需要编译(广义编译,包括了链接)、运行、测试、打包等等流程,而 Python
只需要运行即可,为了把各种语言的不同开发流程抽象成同一套流程,于是有了编码(Code)— 构建(build)— 运行/调试(run/debug)— 测试 (test) — 打包(package) 等等,其中每个环节都可以认为是一个 task,所以可以利用 tasks.json
来手动完成那些使用 IDE 时被隐藏的开发流程细节
字段
tasks.json
文件通常位于.vscode
目录下,具有以下基本结构:
{
"version": "2.0.0",
"tasks": [
{
// 任务配置块
}
]
}
配置块
- label:
string
, 任务的名称或标签,用于在任务列表中标识任务。 - type:
string
, 任务类型,例如 shell 或 process。shell 表示任务将在 shell 中运行,process 表示任务将作为独立的进程运行。 - command:
string
, 要执行的命令,可以是编译器、构建工具、脚本等。 - args:
list<string>
, 传递给命令的参数,数组形式。 - group:
string
, 任务分组,可以设置为 build 或 test,用于标识构建任务或测试任务。 - presentation:控制任务输出的呈现方式,例如是否显示在终端中,是否清除之前的输出等。
- problemMatcher: 配置错误和警告的匹配器,用于从任务输出中解析错误和警告。
- options:任务执行的选项,例如环境变量、当前工作目录等。
launch.json
作用
launch.json
是用于配置调试会话。它定义了调试器如何启动和运行程序。
字段
launch.json
文件一般位于 .vscode
目录下,具有以下基本结构:
{
"version": "0.2.0",
"configurations": [
{
// 配置块
}
]
}
配置块
每个配置块代表一个调试配置,包含多个属性。以下是一些常见属性的说明:
- type:
string
,调试器类型,如python
,cppdbg
,node
,java
, 等。 - request:
string
,调试请求类型,通常为launch(启动)
或attach(附加,附加到进程)
。 - name:
string
,配置名称,在终端列表中的名称。 - program:
string
,要调试的程序路径或文件,比如xx.out
。 - args:
list<string>
,传递给程序的命令行参数,数组形式。 - cwd:
string
,当前工作目录。 - environment:
list<string>
,环境变量设置。 - sourceMaps:是否启用源映射(通常用于 JavaScript 调试)。
- preLaunchTask:
string
,调试前要执行的任务(通常用于编译等)。 - postDebugTask:
string
,调试结束后要执行的任务。 - stopOnEntry:
bool
,调试时是否在程序入口处停止。 - console:控制台类型,如
integratedTerminal
,externalTerminal
, 或internalConsole
。 - justMyCode: 是否只调试用户代码(用于 Python)。
- pythonPath: Python 可执行文件的路径(用于 Python)。
更多的参数可以参考vs 官方介绍
两个文件区别
- 用途
tasks.json
:用于配置和管理自动化任务(编译、构建、运行脚本)launch.json
:用于配置调试器,定义调试会话的启动和运行参数
- 配置内容
tasks.json
:定义要执行的任务及其参数和选项launch.json
:定义调试会话的参数和选项,包括要调试的程序、调试器类型、启动或附加模式等
- 工作流
tasks.json
:适用于日常开发中的重复任务,自动化构建和测试流程launch.json
:适用于调试代码,启动调试会话或附加到正在运行的程序
在许多情况下,tasks.json 和 launch.json 可以结合使用。例如,可以在 launch.json 中定义一个调试配置,并在调试前执行一个由 tasks.json 配置的编译任务