vscode-tasks.json自定义任务

news2024/11/28 2:41:49

以下所有内容,参考自VScode官方文档:

  • vscode_tasks-docs任务说明文档
  • vscode_variables-reference-docs变量说明文档
  • vscode addtional docs for tasks
  • vscode launch.json 属性设置文档,(下文没有介绍,没有涉及)

浅浅记录一下个人对vscode任务(task)的理解,还谈不上使用.

文章目录

  • 前言:浅浅聊.vscode/tasks.json
  • vscode tasks [ ]设置介绍:
  • vscode inputs[ ] 设置介绍:
    • 输入变量类型 Type
  • 尝试写一些tasks.json中的任务,并测试
    • 0. 了解vscode任务的基本结构
    • 1. 编写任务
    • 2. 运行任务
    • 3. 任务运行效果
  • 最后
  • vscode的launch.json

说明: 博客内容均为个人理解,有错误请移步官方文档, 查阅文档, 纠正错误.

个人的task相关的 vscode快捷键设置如下;
其中, ctrl shift B为系统默认快捷键组合, 运行build类型的任务;

在这里插入图片描述


前言:浅浅聊.vscode/tasks.json

  1. Visual Studio Code 的任务(Task)
    有为数不多的方便[用task写一些调试任务],对于其他真正的功能任务,还是交给脚本吧.
    为什么? 小型轻量化的指令,直接手动输入cmd; 复杂的项目构建任务,直接写shell, cmake,等脚本就做完了.vscode能利用task做的可能就个快捷键启动这个过程.
  2. 所以VSCode)中,任务(Task)存在的主要作用? 写起来这么麻烦,功能确实不怎么强,.
    不过,VSCode的任务功能并非毫无价值,它提供了以下几个方面的便利:
  • 集中管理:任务功能允许用户在一个中心位置(tasks.json文件)统一定义和管理各种任务,包括编译、测试、打包、部署等。这样可以避免在不同项目中重复编写类似的命令行脚本,提高代码复用性和组织性。
  • 快捷执行:通过键盘快捷键(如Ctrl+Shift+B)或任务面板快速选择并运行build任务,无需切换到命令提示符或终端手动输入命令,提升了工作效率。
  • 交互体验:任务执行时,VSCode会自动打开输出面板显示任务执行过程和结果,便于实时监控和调试。此外,用户可以轻松地终止任务、重新运行任务、切换不同的任务配置等。
  • 与VSCode生态集成:任务可以与VSCode的其他功能紧密结合,如调试(launch.json)、版本控制、代码片段等,形成一体化的工作流。例如,可以配置一个任务在调试前先构建项目,或者在保存文件时自动触发格式化任务。
  • 跨平台一致性:对于跨平台开发,VSCode的任务配置文件(tasks.json)可以确保在不同操作系统(Windows、macOS、Linux)上执行一致的构建或开发流程,减少了平台差异带来的困扰。

个人看法:

  • tasks.json虽然灵活,但没什么太强的集成型功能,全部需要靠自己编写.
  • vscode的task多数时候是一个方便vscode调用的快捷轻量化的命令,
  • 使用tasks.json 可以熟悉构建调试流程, 摆脱图形化用户界面接口中固定的功能按钮,实现自定义的快捷功能;
  • task.json最主要的用途,一般是联合launch.json使用, 常常用于项目快速调试debug;
    但是,这篇日记仅仅记录 tasks.json 以及 vscode中的变量, 输入变量的简单使用;

vscode tasks [ ]设置介绍:

  • vscode-task-interface说明文档
  • tasks [ …] 一般写在.vscode/tasks.json文件内

在这里插入图片描述

  1. tasks:{ … } 较为基础/重要/常用的设置
  • label:用户界面中使用的任务标签,任务名称/唯一代号, 可以随意起名字。
  • type:‘shell’ | ‘process’; 任务的类型,一般为shell,表示使用shell终端执行命令.
  • windowslinux,当然还有macOS:任何特定于 Windows 或 Linux 或macOS 的属性。 (如果确定了单平台运行,那也可以不写这个平台配置属性)
    • command:要执行的实际命令. 例如 git clone ****, git add . , git push, make all
    • args:参数
    • options(含多个子设置项)
      • cwd:设置当前工作目录, current work directionary,我是这么理解的,也就是终端打开后,自动要跳转到的路径/地址
      • env: 以键值对的形式添加一些变量;
      • shell:设置用哪个shell执行该任务,填入指定shell的具体执行路径,或是对应环境变量
        • executable: “你的shell路径,比如 /usr/bash”,
        • args: [ “115414” ,“yyds”,“坤年”… ], 参数列表
  • dependsOn:[ “label1”,“label2”,""] 依赖的任务列表,或者说前置任务, 任务运行前要运行的任务;
  • dependsOrder: “sequence”, :按照"dependsOn 的任务列表顺序执行
  • group: ‘build’ | ‘test’ | { kind: ‘build’ | ‘test’; isDefault: boolean }; 定义任务归属,标记任务分组;
    • crtl shift b组合,启动的就是,被标为"group":{ kind: 'build' ; isDefault: ture}的任务,如果没有,会启动被标记为"group":'build'的任务;

    • 优先级上: 这个组合键优先检测"group":{ kind: 'build' ; isDefault: ture}的任务,如果没有,才会去检测"group":'build'类型的任务.(test组别同理);

    • 一个group内的task可以有多个,可以被标记为两种分组buildtest,或是isDefault默认启动任务

    • 当然,如果标记多个任务都为"group":'build'或是"group":{ kind: 'build' ; isDefault: ture},那按下组合键crtl shift b会询问
      在这里插入图片描述

    • 一般将,最终构建任务的group标记为{ kind: 'build' ; isDefault: ture}, 这时候crtl shift b组合技就相当于众多ide中的一件build按钮了.(当然,完全看自定义任务的内容)
      在这里插入图片描述

  1. tasks:{ … } 不常用/拓展/附加/,或一般用不到的属性设置,

基本用不到,用到了查文档就是了vscode addtional docs for task;

  • isBackground: true | false,
  • problemMatcher :类似于grep工具,有多种匹配模式, 多样化的正则匹配,筛选输出结果
    • 有配置项base, owner,source, security ,fileLocation,pattern,background
  • presentation:定义在用户界面中处理任务输出的方式。有配置项:
    • reveal: ‘never’ | ‘silent’ | ‘always’; 是否在用户界面,显示输出? 默认always
    • echo: boolean; 是否输出执行的command? 默认ture
    • focus:boolean; 显示任务输出的面板是否处于焦点状态? 默认false
    • panel: ‘shared’ | ‘dedicated’ | ‘new’; 控制任务面板是仅用于此任务(专用),在任务之间共享(共享),还是在每次任务执行时都创建新面板(新)。默认为“shared”。
  • runOptions: ,定义任务 何时运行,如何运行. 有配置项:
    • reevaluateOnRerun: boolean; 被处理过的任务变量是否保留; 默认为ture
    • runOn: string; “default”:默认仅在调用运行该任务指令时,执行; “folderOpen”: 当包含的文件夹被打开时,之执行
    • instanceLimit: number; 最大运行的任务实例数限制
  • 零零碎碎随手记录的一些设置项, 也是直接摘抄的vscode-task-interface说明文档,

vscode inputs[ ] 设置介绍:

输入变量类型 Type

vscode输入变量说明

目前,VS Code 支持三种类型的输入变量:

  1. promptString:显示用于从用户获取字符串的输入框。

有如下属性设置

  • description:描述信息,提示信息
  • default:如果用户不输入其他内容,将使用的默认值给变量赋值
  • password:设置为 ture的时候, 隐藏输入内容, 和输密码的效果一样。
"inputs": [ 
        {
            "id": "变量名字",
            "type": "promptString",
            // 输入参数类型: 直接输入的字符串
            "default": "默认值",
            "password": false,
            //若为true, 输入的字符串全部变为
            //······....的形式,隐藏输入内容
            "description": "一些描述,提示信息",
        },
],
  1. pickString:显示“快速选择”下拉列表,让用户从多个选项中进行选择。

有如下属性

  • description:描述信息,提示信息。
  • options:供用户选择的选项数组。
  • default:如果用户不输入其他内容,将使用的默认值。它必须是选项值之一。
"inputs":[
		{
            "id": "变量名字",
            "type": "pickString",
			//"输入参数类型: 挑选预设的选项",
			//显示“快速选择”下拉列表,
			//让用户从多个选项中进行选择。
            "default": "选项1",
            //默认值只能和预设选项之一保持一致
            "options": [//预设选项
                "选项1",
                "选项2",
                "....",
              ],
            "description": "一些描述,提示信息",
        },
 ]
  1. command:运行任意命令。(??完全用不到,不会用的类型)
  • command:在变量插值上运行的命令。
  • args:传递给命令实现的可选选项包。

尝试写一些tasks.json中的任务,并测试

0. 了解vscode任务的基本结构

"tasks": [
	{ //任务1
		  "label": "", //任务名称
          "type": "shell", //运行类型
          "command": "", // 任务运行的具体指令,具体操作
          "args": [ ]  //command 的附加参数
          "group": "", //任务所属群组,vscode只给了 test 和 build两种群组, 一般是一个build用来构建项目,一个test组用来运行项目或是测试项目等;
          //....
	 },
	 {//任务二 .....
	  },
	 {//任务三 .....
	  },
	  //....
 ]
 //其他
  "inputs": [ // 输入参数的变量定义, 类似于 C语言的scanf 
        { 	//变量 1
        	"id": "",  //id
            "type": "", //类型
            //......
        },
        { // 变量2
        }, 
        //..........
  ]

根据自己需求->编写任务->运行任务->查看运行结果->其他操作

1. 编写任务

  1. 首先用vsocde打开一个空的文件夹或者工作区
  2. 创建.vscode/tasks.json ,打开并编写任务

工作区目录
在这里插入图片描述

  1. 示例tasks.json
  • “任务一:变量输入”
  • “任务二:task快速调用sh脚本,并传参”,
  • “任务test: 查看vscode指代变量测试任务”,
{
    "version": "2.0.0",

    "tasks": [
        {
            "label": "任务一:变量输入",
            "type": "shell",
            "group": "build",
            "windows": {//windows下操作
                "command": "echo",
                "args": [
                    "选择到的变量值:varable1_pick=${input:varable1_pick}",
                    "输入的变量字符:varable2_input=${input:varable2_input}",
                    "$env:myvar1",
                    "$env:myvar2",
                    "当前打开文件路径:${fileDirname}"
                ],
                "options": {
                    "cwd": "${workspaceFolder}", //command 运行在"cwd"指定的目录
                    "env": {
                        "myvar1": "环境变量中家目录: ${env:HOMEPATH};", //windows下家目录环境变量
                        "myvar2": "当前工作区的路径: ${workspaceFolder}",// vscode指代路径
                    },
                    // "shell": {
                    //指定执行任务的shell终端, powershell, bashshell? 
                    //默认看自己的vscode settings.json配置默认的shell
                    //     "executable": "",
                    //     "executable": "", //windows下默认powershell,可以写自己的shell
                    //     "args": []
                    // }
                }
            }
        },
        {
            "label": "任务二:task快速调用sh脚本,并传参",
            "type": "shell",
            "options": { "cwd": "${workspaceFolder}",},
            "windows": {
                "command": "./hello.ps1",
                "args": [
                    "task传递参数1,脚本路径 ${workspaceFolder}\\hello.sh",
                    "task传递参数2",
                    "task传递参数3",
                    "task传递参数4,任务二,利用task给shell脚本传参",
                ],
            },
            "group": {"kind": "build","isDefault": true,},
            "dependsOrder": "sequence", 
            "dependsOn": [ "任务一:变量输入",],
            //注释掉depends这两行,任务二不再依赖任务一,从而,任务一二可以单独运行,
        },
        {
            "label": "任务test: 查看vscode指代变量测试任务",
            "type": "shell",
            "command": "echo",
            "args": [
                "{workspaceFolder}          ${workspaceFolder}          \r\n",
                "{workspaceFolderBasename}  ${workspaceFolderBasename}  \r\n",
                "{file}                     ${file}                     \r\n",
                "{fileWorkspaceFolder}      ${fileWorkspaceFolder}      \r\n",
                "{relativeFile}             ${relativeFile}             \r\n",
                "{relativeFileDirname}      ${relativeFileDirname}      \r\n",
                "{fileBasename}             ${fileBasename}             \r\n",
                "{fileBasenameNoExtension}  ${fileBasenameNoExtension}  \r\n",
                "{fileExtname}              ${fileExtname}              \r\n",
                "{fileDirname}              ${fileDirname}              \r\n",
                "{fileDirnameBasename}      ${fileDirnameBasename}      \r\n",
                "不完全测试,详细查看https://code.visualstudio.com/docs/editor/variables-reference",
                "某些vscode指代的变量会随,打开的文件和文件夹变换,并不固定; 仅供参考",
                "###############################################",
            ],
            "group": {"kind": "test","isDefault": true },
        },
    ],
    
    "inputs": [  
        {
            "id": "varable1_pick",
            "type": "pickString",//"输入参数类型: 挑选预设的选项",
            "default": "选项1: make arch=arm",
            "options": [
                "选项1: make arch=arm",
                "选项2: make arch=riscv",
              ],
            "description": "选项类型的输入参数,可以自己设计预选项",
        },
        {
            "id": "varable2_input",
            "type": "promptString",// 输入参数类型: 直接输入的字符串
            "password": false,// 是否是密码**掩盖输入
            "default": "默认字符串",
            "description": "直接输入的字符串,输入即所得的变量值",
        },
      ],
}
  1. 在工作区目录下,创建一个名为hello.ps1的 powershell脚本,测试参数传入.
$count = 1
foreach ($arg in $args) { //依次打印传入的参数
    Write-Host "vscode/cmd #argument$count : $($arg)" -ForegroundColor Green
    $count++
}

2. 运行任务

  1. ctrl shtf b ,默认是运行build任务, 如果build任务只有一个,会直接运行,不需要选择
  2. 这里个人设置了快捷键,可以 ctrl alt r ,快速查看可运行任务,
    在这里插入图片描述
    没设置快捷键,用 ctrl shtf p 搜索 task run , 选中并进入, 查看可运行任务,
    在这里插入图片描述
    或是在菜单栏,找到终端->运行任务,查看可运行任务
    在这里插入图片描述
    再或者,安装一个Task Manager插件,然后在侧边栏,打开插件,查看任务,运行任务.
    在这里插入图片描述在这里插入图片描述

3. 任务运行效果

任务二运行效果:
任务二是"group": {"kind": "build","isDefault": true },, 个人可以通过快捷键ctrl alt R直接运行启动.
因为 任务二设置的 depondOn为任务一, 因而会先执行任务一,才会执行任务二;
/

说明:

  • 任务一运行后:先弹出一个选项提示输入框,只能选择预设,而后弹出一个字符串输入框,测试输入字符串到任务的变量内,回车确认;
  • 输入完成后,任务一执行,并输出;
  • 然后执行任务二: vscode task向hello.ps1脚本传参测试

在这里插入图片描述

任务test运行输出:
任务test 是"group": {"kind": "test","isDefault": true },, 个人可以通过快捷键ctrl alt T直接运行启动.
注意: 输出结果中的一些vscode变量会随当前打开的文件/文件夹不同而改变
在这里插入图片描述


最后

  1. vscode的task.jsonlaunch.json许多插件都是已经集成好了的,不必如此麻烦地自己定义构建调试任务.

比如cmake tools, 这个vscode插件, 内部集成了很多完善的task与launch, 可以做到一键构建,一键debug等等操作,前提是会问自然语言模型(提问,抄改),写好cmake.
在这里插入图片描述在这里插入图片描述

  1. 现在新出了好多自然语言模型,通义千问, 讯飞星火,智谱清言 文心一言,盘古等,还有一堆相关的代码助手codegeex,comate,通义灵码,codeium.
    ------这些服务的基础功能免费,代码助手也都推出了vscode和IDEA的插件.可以给入门带来很大帮助.
  2. 至于vscode的tasks.json具体能干什么, 具体看自己的需求了.
    ------前面也说到了, tasks.json最主要的用途,一般是联合launch.json使用, 常常用于项目快速调试debug;
    然而,这篇日记仅仅记录 tasks.json 以及 vscode中的变量, 输入变量的简单使用;

vscode的launch.json

  • vscode launch.json一般联合task.json使用, 常常用于项目调试debug;
  • 这篇日记仅仅记录了 tasks.json 以及 vscode中task.json中的变量, 输入变量的简单使用, 不涉及launch.json.
  • 对于如何使用vscode调试各种项目感兴趣,可以去看vscode官方的launch.json与debug设置介绍文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1577938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TouchGFX之时钟

代码 #ifndef TOUCHGFX_ABSTRACTCLOCK_HPP #define TOUCHGFX_ABSTRACTCLOCK_HPP #include <touchgfx/containers/Container.hpp> #include <touchgfx/hal/Types.hpp>namespace touchgfx { class AbstractClock : public Container { public:AbstractClock();/* 设…

【IMU系列】什么是传感器的ODR和FSR实际如何配置传感器

使用更高的ODR信号有两个主要缺点&#xff1a;内存限制和功耗 以实际传感器为例

Redis分布式锁误删情况说明

4.4 Redis分布式锁误删情况说明 逻辑说明&#xff1a; 持有锁的线程在锁的内部出现了阻塞&#xff0c;导致他的锁自动释放&#xff0c;这时其他线程&#xff0c;线程2来尝试获得锁&#xff0c;就拿到了这把锁&#xff0c;然后线程2在持有锁执行过程中&#xff0c;线程1反应过…

成都正信晟锦:借了钱不还怎么起诉对方

在民间借贷中&#xff0c;遇到对方借钱不还的情况时&#xff0c;可以依法通过起诉的方式解决纠纷。首先&#xff0c;债权人应与债务人进行沟通&#xff0c;尝试和解。如果协商无果&#xff0c;则需收集证据&#xff0c;包括但不限于借条、转账记录、双方通讯记录等&#xff0c;…

mysql忘记密码如何重置

错误截图 解决方法 1. 关闭mysql服务器 net stop mysql服务名 2. 查找mysql安装路径中bin目录路径 3. cmd 打开该目录 4. 在my.ini所在的目录&#xff0c;新建一个init_pwd.txt文件。文件内容如下 ALTER user rootlocalhost identified by 密码; 5. 在第四步打开的cmd中 输…

vscode的基本使用(简洁版)

1.Vscode配置C/C开发环境 1.1 下载编译器 MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net 下载并解压 -> 放到电脑C盘的根目录下 1.2 配置环境变量 1.3 安装C/C插件 2. 在VScode上编写C语言代码并编译成功 在vscode中写代码时,需要将代码放在…

在Idea里,执行npm命令 : 无法加载文件 ***\Nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 往期热门专栏回顾 专栏…

重建大师进行扫码认证了,接下来怎样才能正常使用?(如下图)

重建大师软件授权已经有了后&#xff0c;新建工程后设置任务目录和监控目录一致就可以运行了。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件&#xff0c;输入倾斜照片&#xff0c;激光点云&#xff0c;POS信息及像控点&#xff0c;输出高精度彩色网格…

Tiktok矩阵系统是什么?——Tiktok矩阵系统的优势、功能、及应用场景的介绍

摘要 Tiktok作为全球现象级的短视频平台,其发展前景日益明朗。 Tiktok全世界有多少用户? TikTok作为全球性的社交媒体平台,其用户数量一直在持续增长。根据最新的数据,预计到2024年,TikTok的用户数量将达到数十亿,覆盖全球范围内的各个年龄段和地区。具体来说,根据Ti…

互质数的个数(acwing)

题目描述&#xff1a; 给定 a,b&#xff0c;求 1≤x<a^b 中有多少个 x 与 a^b 互质。 由于答案可能很大&#xff0c;你只需要输出答案对 998244353 取模的结果。 输入格式&#xff1a; 输入一行包含两个整数分别表示 a,b&#xff0c;用一个空格分隔。 输出格式&#xf…

W25QXX系列W25Q64介绍

文章目录 前言介绍W25Q系列硬件电路四重SPI&#xff08;了解&#xff09; 框图Flash操作注意状态寄存器指令集电器特性 前言 W25Q64是一个8MByte大小的非易失性存储器&#xff0c;使用的是SPI协议&#xff0c;本文将全面介绍W25Q64的特性、工作原理以及注意事项 SPI详解见&am…

30万奖金谁能瓜分?OurBMC开源大赛决赛入围名单公示

首届开放原子开源大赛基础软件赛道自今年 1 月开启报名以来&#xff0c;吸引了全国各地 BMC 技术爱好者的广泛关注和踊跃报名。该赛事由开放原子开源基金会牵头&#xff0c; OurBMC 社区及理事长单位飞腾信息技术有限公司联合承办&#xff0c;以 “基于 BMC 技术的服务器故障诊…

CSS导读 (Emmet语法)

&#xff08;大家好&#xff0c;今天我们将继续来学习CSS的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 续&#xff1a;七、Chrome调试工具 一、Emmet语法 1.1 快速生成HTML结构语法 1.2 快速生成CSS样式语法 &…

ctfshow web入门 php特性 web108--web115

web108 ereg函数相当于而preg_match()函数 ereg函数的漏洞&#xff1a;00截断。%00截断及遇到%00则默认为字符串的结束 strrev函数就是把字符串倒过来 就是说intval处理倒过来的传参c0x36d&#xff08;877&#xff09;?ca%00778 web109 异常处理类 通过异常处理类Excepti…

DFS-0与异或问题,有奖问答,飞机降落

代码和解析 #include<bits/stdc.h> using namespace std; int a[5][5]{{1,0,1,0,1}}; //记录图中圆圈内的值&#xff0c;并初始化第1行 int gate[11]; //记录10个逻辑门的一种排列 int ans; //答案 int logic(int x, int y, int op){…

3D引擎八叉树构建算法实现

最近&#xff0c;我一直在努力研究我的3D引擎Storm3D。 我花费大量时间的功能之一是开发一种通用且高效的八叉树数据结构&#xff0c;它将用于从碰撞检测到基于体素的渲染等多种用途。 在这里我将介绍构建八叉树的基本算法以及你可能遇到的一些障碍。 NSDT工具推荐&#xff1a;…

实习该选择c++后台开发(写业务逻辑)还是音视频开发(写sdk)?

后台开发:更多是理解需求、分析问题、解决bug等能力、对于逻辑培养有很大的帮助。可以进行软件开发、网络开发、游戏开发、以及之后可能的物联网相关开发。在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「音视频开发的资料从专业入门到高级教程」&#…

光伏电站投资与收益能成正比吗?

光伏电站作为绿色能源的代表&#xff0c;近年来在全球范围内得到了广泛的关注和应用。然而&#xff0c;光伏电站的投资与收益是否能成正比&#xff0c;始终是投资者和市场关注的焦点。本文将就此问题进行深入探讨。 首先&#xff0c;我们必须明确光伏电站的投资与收益并非简单的…

黑马Seata入门到实战教程(学习笔记)

Seata CAP理论 BASE理论 XA AT TCC sage模式 缺点&#xff1a;数据隔离性安全问题 四种模式对比

破晓数据新纪元:隐语隐私计算,携手共创安全智能的未来生态

1.业务背景&#xff1a;安全核对产生的土壤 隐语隐私计算在安全核对业务背景下的应用&#xff0c;主要聚焦于解决企业在数据交换和分析过程中面临的隐私保护问题。 在许多行业中&#xff0c;特别是在金融、医疗、政务等领域&#xff0c;数据的安全核对至关重要&#xff0c;例如…