vscode-task.json自定义任务

news2024/12/26 13:00:39

以下所有内容,参考自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": "直接输入的字符串,输入即所得的变量值",
          },
      ],
}

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

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

相关文章

【opencv】教程代码 —video(1) 对象追踪

CamShift算法、MeanShift追踪算法来追踪视频中的一个目标 camshift.cpp CamShift算法 // 引入相关的头文件 #include <iostream> // 包含C的输入输出流库 #include <opencv2/imgcodecs.hpp> // OpenCV图像编解码功能 #include <opencv2/imgproc.hpp> // Open…

Redis -- 缓存击穿问题

缓存击穿问题也叫热点Key问题&#xff0c;就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了&#xff0c;无数的请求访问会在瞬间给数据库带来巨大的冲击。 常见的解决方案有两种&#xff1a; 互斥锁 逻辑过期 逻辑分析&#xff1a;假设线程1在查询缓存之后&…

Java实现一个简易的布隆过滤器Bloom Filter

目录 什么是布隆过滤器&#xff1f; 作用&#xff1a; 实现一个简单的布隆过滤器&#xff1a; 解析&#xff1a; 什么是布隆过滤器&#xff1f; 布隆过滤器&#xff08;Bloom Filter&#xff09;是一种用于快速检查一个元素是否可能存在于一个集合中的数据结构&#xff0c;它…

【移动安全】对webview漏洞的一些分析

这次分析的app如下&#xff1a; 打开发现该app发现需要登录界面&#xff1a; 拖进jadx看一下&#xff0c;先来看一下AndroidManifest.xml文件 发现有两个类是导出&#xff0c;再来分析这两个类 这个RegistrationWebView类利用webview.loadUrl进行加载网页 java public class…

代码随想录第三十一天 | 贪心算法P1 | ● 理论基础 ● 455. ● 376. ● 53.

理论基础 题目分类 一般解题步骤 贪心算法一般分为如下四步&#xff1a; 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 这个四步其实过于理论化了&#xff0c;我们平时在做贪心类的题目 很难去按照这四步去思考&…

Ps:合并到 HDR Pro

Ps菜单&#xff1a;文件/自动/合并到 HDR Pro Automate/Merge to HDR Pro 合并到 HDR Pro Merge to HDR Pro命令可以将同一场景的具有不同曝光度的多个图像合并起来&#xff0c;从而捕获单个 HDR 图像中的全部动态范围。 合并到 HDR Pro 命令分两步进行。 首先&#xff0c;需要…

什么是NLP?

&#x1f916;NLP是什么&#xff1f;&#x1f916; NLP&#xff08;Natural Language Processing&#xff09;&#xff0c;全称自然语言处理&#xff0c;是人工智能不可或缺的一环&#xff0c;它搭建了人与计算机之间沟通的桥梁&#x1f309;。 &#x1f6e0;️NLP强大功能一…

Day:003 | Python爬虫:高效数据抓取的编程技术(爬虫基础)

urllib发送get请求 在目前网络获取数据的方式有多种方式&#xff1a;GET方式大部分被传输到浏览器的html&#xff0c;images, js,css, … 都是通过GET 方法发出请求的。它是获取数据的主要方法 例如&#xff1a;www.baidu.com 搜索 Get请求的参数都是在Url中体现的,如果有中…

客户不报预算咋办?

谈崩了10个单子&#xff0c;我才领悟到谈判的精髓。创业一年了&#xff0c;去年累计服务客户30。说起来是市场好也罢&#xff0c;凑巧也罢反正没怎么费劲就谈下了不少客户&#xff0c;也做到了月入5位数。 今年一开年因为有老客户撑着&#xff0c;我也没太认真拓展新客户&#…

Mysql数据库getshell方法

今天摸鱼时候&#xff0c;突然有人问我不同的数据库getshell的方式&#xff0c;一时间我想到了mysql还有redis未授权访问到getshell的方式&#xff0c;但是仅仅第一时间只想到了这两种&#xff0c;我有查了查资料&#xff0c;找到了上面两种数据库getshell的补充&#xff0c;以…

Android源码笔记-输入事件(二)

这一节主要了解输入事件的获取&#xff0c;InputReaderThread继承自C的Thread类&#xff0c;Thread类封装了pthread线程工具&#xff0c;提供了与Java层Thread类相似的API。C的Thread类提供了一个名为threadLoop()的纯虚函数&#xff0c;当线程开始运行后&#xff0c;将会在内建…

【Linux】软硬链接 / 动静态库

目录 一. 软硬链接1. 硬链接2. 软链接3. unlink4. 目录的硬链接 二. 动静态库1.1 静态库制作1.2 静态库使用2.1 动态库制作2.2 动态库使用3. 动态链接原理 一. 软硬链接 1. 硬链接 硬链接(hard link) 可以将它理解为原始文件的别名, 和原始文件使用相同的 inode 编号和 data …

GraphSage

背景 大型图中节点的低维嵌入在各种预测任务中非常有用。GraphSage是一种通用的归纳框架&#xff0c;它利用节点特征信息&#xff08;例如&#xff0c;文本属性&#xff09;有效地为以前看不见的数据生成节点嵌入。相比于对每个节点训练单独的嵌入&#xff0c;GraphSage学习了一…

深入浅出 -- 系统架构之单体到分布式架构的演变

一、传统模式的技术改革 在很多年以前&#xff0c;其实没有严格意义上的前后端工程师之分&#xff0c;每个后端就是前端&#xff0c;同理&#xff0c;前端也可以是后端&#xff0c;即Ajax、jQuery技术未盛行前的年代。 起初&#xff0c;大部分前端界面很简单&#xff0c;显示的…

thinkphp6入门(21)-- 如何删除图片、文件

假设文件的位置在 /*** 删除文件* $file_name avatar/20240208/d71d108bc1086b498df5191f9f925db3.jpg*/ function deleteFile($file_name) {// 要删除的文件路径$file app()->getRootPath() . public/uploads/ . $file_name; $result [];if (is_file($file)) {if (unlin…

【语音识别】声学建模中基于树的状态绑定

01 基本想法 单音素HMM模型不能很好的应对自然说话人发音时的渐变过程&#xff0c;比如从一个音素转换到另一个音素时会存在协同发音现象。因此语音识别的先驱者提出了上下文建模概念&#xff0c;即使用中心音素&#xff08;单因素&#xff09;和前后两个音素组成三音素对每一…

【Laravel】09 用模型批量赋值简化代码 数据库关系

【Laravel】09 用模型批量赋值简化代码 & 数据库关系 1. 用模型批量赋值简化代码2. 数据库关系 1. 用模型批量赋值简化代码 原来存储一个值 2. 数据库关系 这里可以看到两个SQL是一样的

函数重载和引用【C++】

文章目录 函数重载什么是函数重载&#xff1f;函数重载的作用使用函数重载的注意点为什么C可以函数重载&#xff0c;C语言不行&#xff1f; 引用什么是引用&#xff1f;引用的语法引用的特点引用的使用场景引用的底层实现传参时传引用和传值的效率引用和指针的区别 函数重载 什…

QT Creator概览

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;QT❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、Qt Creator 概览 ①&#xff1a;菜单栏 ②&#xff1a;模式选择 ③&#xff1a;构建套件选择器…

Vue2电商前台项目(二):完成Home首页模块业务

一、项目开发的步骤 1、书写静态页面&#xff08;HTML&#xff0c;CSS&#xff09; 2、拆分组件 3、获取服务器的数据动态展示 4、完成相应的动态业务逻辑 经过分析之后&#xff0c;Home首页可以拆分为7个组件&#xff1a;TypeNav三级联动导航&#xff0c;ListContainer&…