vscode-task.json自定义任务

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

  • vscode_task-docs任务说明文档
  • vscode_variables-reference-docs变量说明文档
  • vscode addtional docs for task

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

  • 这篇blog记录一下个人对vscode任务(task)的使用方法

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

在这里插入图片描述


文章目录

  • vscode 的任务 task是什么? 任务(task)如何输入参数? 如何自定义一些连续任务?
  • vscode task [ ]接口介绍:
    • 1. 较为基础/重要/常用的设置
    • 2. 不常用/拓展/附加/高级,或一般用不到的属性设置,
  • 写一个自定义的任务并测试
    • 0. 一个vscode任务的基本结构
    • 1. 编写任务
    • 2. 运行任务
    • 3. 任务运行结果
    • 示例task.json

vscode 的任务 task是什么? 任务(task)如何输入参数? 如何自定义一些连续任务?

在Visual Studio Code (VSCode)中,任务(Task)是一个强大的功能,允许用户配置和执行各种自动化任务。这些任务可以包括但不限于以下操作:

  1. 构建:编译源代码,如对C++、Java、TypeScript等项目的编译。(最好用的地方,)
  2. 运行脚本:调用npm scripts、Makefiles、bashshell, powershell, gcc/g++ , cmake, tsc等各种构建工具或脚本。
  3. 完成一系列cmd操作 … 很多都可以用 vscode任务的形式,来减少每次在terminal输入cmd的重复操作
  • vscode的task多数时候是一个方便vscode调用的cmd的快捷方式
  • 用于小型项目的灵活构建,快速运行(整体上,可以熟悉构建调试流程, 摆脱GUI那种固定功能的点点点; )
  • task任务很有自由度, 和搭积木一样, 具体玩法看个人创造力.

vscode task [ ]接口介绍:

vscode-task-interface说明文档

1. 较为基础/重要/常用的设置

  • 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内的task可以有多个,可以被标记为两种分组buildtest,或是isDefault默认启动任务

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

    • 当然,如果标记多个任务都为"group":'build' 或是"group":{ kind: 'build' ; isDefault: ture},那按下组合键crtl shift b会询问你要执行哪一个被标记的任务, 不会一股脑全部执行; 所以,要自己晓得任务的label6,图片名字有什么卵用? 我写了也没个作用

    • ctrl alt r 自定义的快捷键,快速查看可运行任务, 或者用 ctrl shtf p 搜索 task run 查看可运行任务,(各种插件都会有奇奇怪怪的任务, 记得根据自己任务的label名字选对)
      在这里插入图片描述

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

2. 不常用/拓展/附加/高级,或一般用不到的属性设置,

基本用不到,用到了查文档就是了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说明文档,更直接准确. 或者去问通义千问, 讯飞星火,智谱清言, 个人笔记随心排版的, 全当再看英语阅读理解的观后笔记了,现在翻译插件还是很棒的,

写一个自定义的任务并测试

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/task.json , 直接打开它编辑 ,没有就创建.

示例task.json放在文章末, 写了3个build组别任务, 1个test组别任务;
在这里插入图片描述

2. 运行任务

  • ctrl shtf b ,默认是运行build任务, 如果build任务只有一个,会直接运行,不需要选择
  • 这里运行 ctrl alt r 自定义的快捷键,快速查看可运行任务, 或者用 ctrl shtf p 搜索 task run 查看可运行任务,
  • ↑↓选择需要运行的task或是鼠标点击, 运行任务.
    在这里插入图片描述

3. 任务运行结果

运行 任务一:
在这里插入图片描述

运行 任务二:

  1. 发现弹出参数选择栏, 同样选择输入的参数
    在这里插入图片描述
  2. 输出结果如下图:
    在这里插入图片描述

运行 任务三: 依赖于任务一二,因此会先执行任务一二

  1. 先执行了依赖的任务一二后,才会执行任务三
  2. 任务三开始执行,提示输入字符串
    在这里插入图片描述 3. 键盘输入字符串, 按下回车, 任务三就接收了这个变量值, 得到如下输出
    在这里插入图片描述

示例task.json

ctrl alt B可以打开第二侧边栏(目录/大纲), 可以加快浏览便捷性;

 {
    "version": "2.0.0",
    "tasks": [
        {
            "label": "任务一:变量测试",
            "type": "shell",
            "group": "build",
            "windows": {
                "command": "echo",
                "args": [
                    "$env:myvar1",
                    "",
                    "$env:myvar2"
                ],
                "options": {
                    "cwd": "${workspaceFolder}", //command 运行在"cwd"指定的目录
                    "env": {
                        "myvar1": "环境变量之家目录: ${env:HOMEPATH};", //windows下家目录环境变量
                        "myvar2": "这是工作区的路径: ${workspaceFolder} "// vscode指代路径
                    },
                    "shell": {
                        "executable": "", //windows下默认powershell,可以写自己的shell
                        "args": []
                    }
                }
            }
        },
        {
            "label": "任务二:输入参数选择, make arch=",
            "type": "shell",
            "command": "echo",
            "group": "build",
            "args": [
                " 任务二,可以利用这个参数做一些操作, 如 make arch=${input:varable1_pick} \r\n  "
            ]
        },
        {
            "label": "任务三:输入参数选择  make all=",
            "type": "shell",
            "command": "echo",
            "args": [
                " 任务三,可以利用这个参数做一些操作, 如 make target=${input:varable2_input}\r\n"
            ],
            "group": {
                "kind": "build",
                "isDefault": true,
            },
            "dependsOrder": "sequence",
            "dependsOn": [
                "任务一:变量测试",
                "任务二:输入参数选择, make arch=",
            ],
        },

        {
            "label": "任务test: 查看vscode指代变量测试任务",
            "type": "shell",
            "command": "echo",
            "args": [
                "{workspaceFolder}          ${workspaceFolder}",
                "{workspaceFolderBasename}  ${workspaceFolderBasename}",
                "{file}                     ${file}",
                "{fileWorkspaceFolder}      ${fileWorkspaceFolder}",
                "{relativeFile}             ${relativeFile}",
                "{relativeFileDirname}      ${relativeFileDirname}",
                "{fileBasename}             ${fileBasename}",
                "{fileBasenameNoExtension}  ${fileBasenameNoExtension}",
                "{fileExtname}              ${fileExtname}",
                "{fileDirname}              ${fileDirname}",
                "{fileDirnameBasename}      ${fileDirnameBasename}",
                "不完全测试,详细查看https://code.visualstudio.com/docs/editor/variables-reference",
                "###############################################"
            ],
            "group": {
                "kind": "test",
                "isDefault": true
            }
        }
    ],
    
    "inputs": [ // 输入参数的变量定义, 类似于 C语言的scanf 
        {
            "id": "varable1_pick",
            "type": "pickString",//"输入参数类型: 挑选预设的选项",
            "default": "默认选项值,不选的话默认",
            "options": [
                "结构1_riscv",
                "架构2_arm",
              ],
            "description": "选项类型的输入参数,可以自己设计预选项",
        },
        {
            "id": "varable2_input",
            "type": "promptString",// 输入参数类型: 直接输入的字符串
            "default": "默认不输入的话,这个值就会填上去",
            "description": "直接输入的字符串,输入即所得的变量值",
        },
        {
            "id": "varable115414", //  
            "type": "promptString",//  
            "default": "未选择选项",
            "description": "直接输入的字符串,输入即所得的变量值",
          },
      ],
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++中的STL——vector类的基本使用

目录 vector介绍 vetor类定义 vector常见构造 vector类中的容量操作 size()函数与capacity()函数 resize()函数 reserve()函数 max_size()函数 vector类中的数据遍历操作 operator[]()与at()函数 vector类中的迭代器遍历 正向遍历begin()和end()迭代器——非const …

adobe stock会员开通付费付款订阅充值教程/adobe stock免费白嫖一个月

登录adobe stock的官网,点击你想要下载的视频,然后点击免费下载,我们点击免费试用按钮,可以看到非常贵,需要80美金一个月,用fomepay可以免费白嫖一个月 点击获取一张虚拟信用卡,就可以白嫖一个…

基于JAVA+SpringBoot+Vue的前后端分离的大学健康档案管理系统

一、项目背景介绍: 随着社会的发展和科技的进步,人们越来越重视健康问题。大学作为培养人才的摇篮,学生的健康状况直接影响到国家的未来。然而,传统的大学健康档案管理方式存在诸多问题,如信息不透明、数据分散、更新不…

【MySQL数据库 | 第二十二篇】深入了解MySQL锁

前言: MySQL作为世界上最流行的关系型数据库管理系统之一,广泛应用于各种规模和类型的应用程序中。在处理高并发和大规模数据操作时,确保数据的一致性和完整性是至关重要的。而MySQL的锁机制正是在这样的背景下发挥着重要作用。 MySQL锁机制…

LeetCode 热题 100 | 贪心算法

目录 1 121. 买卖股票的最佳时机 2 55. 跳跃游戏 3 45. 跳跃游戏 II 4 763. 划分字母区间 菜鸟做题,语言是 C 1 121. 买卖股票的最佳时机 解题思路: 维护一个变量 max_pricemax_price 用于存储排在 i 天之后的股票最高价格第 i 天的最高利润 …

地质地貌卫星影像集锦(三 矿产资源篇)

1. 元古代沉积岩的抬升 这个地区位于Leigh Creek中部,距离澳大利亚南部的阿德莱德约500km,弗林德斯山脉的北面是Gawler克拉通。弗林德斯山脉是由元古代沉积岩抬升后形成的块体,在其之下的是寒武纪的岩石,它座落在距阿德莱德北…

唐刘:关于产品质量的思考 - 我的基本认知

我在文章《 TiDB in 2023 - 一次简单的回顾 》 中提到了一个我一直以来面临的问题:每次 TiDB 发布新版本后,我如何能够非常自信地告诉客户,这个版本的质量很好,大家可以放心使用呢? 坦白地说, 这个问题并不…

[HackMyVM]靶场Deeper

难度:Easy kali:192.168.56.104 靶机:192.168.56.148 端口扫描 ┌──(root㉿kali2)-[~/Desktop] └─# nmap 192.168.56.148 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-05 19:55 CST Nmap scan report for 192.168.56.148 Host is up (0.00013s latency). N…

数据结构:详解【树和二叉树】

1. 树的概念及结构(了解) 1.1 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝…

智慧公厕升级为多功能城市智慧驿站,助力智慧城市发展

在现代城市的建设中,公共厕所作为基础必备的民生设施,一直是城市管理的重要组成部分。随着科技的不断发展,智慧公厕应运而生,成为了公共厕所信息化、数字化、智慧化的应用解决方案。而近年来,智慧公厕也进行了升级发展…

20240309web前端_第三周作业_教务系统页面

作业&#xff1a;教务系统页面 成果展示&#xff1a; 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1…

拥塞控制算法系列之:Swift-谷歌2020年SIGCOM-包级别端到端TIMELY拥塞控制算法

核心要点&#xff1a; 谷歌 2020 SIGCOM基于delay的AIMD拥塞拆分EC和FC&#xff0c;时延敏感场景优势分别计算EC和FC的wnd&#xff08;最核心&#xff09;保障吞吐和低延迟。Swift 因利用延迟的简单性和有效性而闻名包级别的论文&#xff1a;https://dl.acm.org/doi/pdf/10.11…

【保姆级讲解如何计算机视觉入门】

&#x1f308;个人主页:程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

江协STM32:对射式红外传感器计次和旋转编码器计次

对射式红外传感器计次 还是复制粘贴之前的文件 创建外部中断文件 然后写初始化函数 外部中断函数创建 这里写外部中断函数 看着这个图来配置 具体步骤就是&#xff1a; 第一步&#xff0c;配置RCC&#xff0c;把我们这里涉及的外设的时钟都打开&#xff0c;不打开时钟&#…

深入浅出 -- 系统架构之微服务中OpenFeign最佳实践

前面我们讲了一下 Ribbon 和 RestTemplate 实现服务端通信的方法&#xff0c;Ribbon 提供了客户端负载均衡&#xff0c;而 RestTemplate 则对 http 进行封装&#xff0c;简化了发送请求的流程&#xff0c;两者互相配合&#xff0c;构建了服务间的高可用通信。 但在使用后也会发…

c++的学习之路:12、vector(1)

这章主要是根据cplusplus中的文档进行使用Vector&#xff0c;文章末附上测试代码。 目录 一、什么是vector 二、vector的简单使用 三、代码 一、什么是vector 下图是cplusplus的简介&#xff0c;上面一共有六点&#xff0c;如下&#xff1a; 1、vector是表示可变大小数组…

Leetcode 216.组合总和III

题目 思路 题目说只使用数字1-9&#xff0c;是k个数的和 树的宽度是1-9&#xff0c;树的深度是k 1.确定递归函数的返回值及参数&#xff1a; 返回值是void,参数这里还是先设定两个全局变量。一个是path存放符合条件单一结果。如&#xff1a;&#xff08;1&#xff0c;2&…

VSCODE EIDE使用debug记录

用上vscode之后就感觉之前的keil不太爽了&#xff0c;找什么东西搜索都很麻烦&#xff0c;之前有写过eide的文章&#xff0c;想着能不能在eide里面就把debug也做了&#xff0c;发现真的可以&#xff0c;下面记录一下&#xff0c;主要是参考这个大佬的文章&#xff0c;非常感谢。…

微电网优化:基于肝癌算法(Liver Cancer algorithm, LCA)的微电网优化(提供MATLAB代码)

一、微电网优化模型 微电网是一个相对独立的本地化电力单元&#xff0c;用户现场的分布式发电可以支持用电需求。为此&#xff0c;您的微电网将接入、监控、预测和控制您本地的分布式能源系统&#xff0c;同时强化供电系统的弹性&#xff0c;保障您的用电更经济。您可以在连接…

离线数仓(十)【ADS 层开发】

前言 剩下的 ADS 层主要就是写 SQL 了&#xff0c;就像我们之前练习的 HQL 题一样&#xff0c;不同的是这里的数据从哪张表读取&#xff08;DWD 还是 ADS 甚至个别表需要从 DIM 层读取&#xff09;需要我们自己来分析。 ADS 的建表语句和 MySQL 是对应的&#xff0c;我们到时候…