热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

手把手学会VSCode任务神技,成为项目组最靓的崽!

点击上方前端Q,关注公众号回复加群,加入前端Q技术交流群📖阅读须知,阅读本文你将学会以下知识:1.明白VSC

点击上方 前端Q,关注公众号

回复加群,加入前端Q技术交流群

📖阅读须知,阅读本文你将学会以下知识:
1. 明白VS Code 任务系统是什么?
2. 按步骤学会一步步配置一些简易而实用的VS Code任务

在不知道VSCode任务系统的人看来,它就像是魔法一样!

利用任务,可以有多便捷?

背景: 我司的代码合入采用的是 从主仓库fork => 从个人仓库提Merge Request这种github经典模式。
日常: 因此我司员工经常需要依次执行以下4条指令或者在VSCode源代码管理中依次执行以下四个操作:

  1. $ git stash push -u -m xxx (将当前未提交的内容存储)

  2. $ git pull base --rebase (从主仓库变基拉取代码)

  3. $ git push origin --force (向个人仓库推送)

  4. $ git stash pop (弹出之前存储的内容)

魔法: 熟悉VS Code任务系统的我,在执行以上内容时,只需要两步:

  1. 按下一个快捷键

  2. 连点两下回车键

如下:outside_default.png
接下来VS Code竟自行完成了以上四个步骤!

0f3b51737f7fba0eb43475586d883786.png
Inkedtask2_LI.jpg

这不仅能让我把上面这种耗时的日常操作浓缩到不到两秒的操作中,还让能不经意间在同事面前展示一下那神秘的极客范

那么?VS Code 任务系统到底是什么?它能做什么?我们要怎么使用它呢?

什么是VS Code任务系统?

VS Code 任务系统支持用户通过可视化界面、热键来触发运行脚本或启动程序的效果。它的行为是通过配置来定义的。

官方地址:\# VS Code 任务[2]
关键词解读:

  1. 目标:运行脚本、启动程序;
    任务系统的终极目标,是去执行一些你期望执行的脚本执行程序。以本文开始时的例子为例,执行git 命令便是执行脚本了。

  2. 触发方式:可视化界面、热键;
    你可以通过快捷键唤出任务列表进行选择,或者直接执行你设置了热键的任务。

  3. 定义方式:配置;
    JSON格式。

动手一:配置一个最简单的git-fetch任务

  1. 在项目根目录下创建一个.vscode文件夹,并创建一个.vscode/tasks.json文件。

8ecef71adf931f2d3bedcef4a84fa8b5.png
vscode1.png
  1. 在tasks.json内输入如下内容:

{"version": "2.0.0","tasks": [{// 任务的名称"label": "git-fetch",// 任务类别,shell代表脚本"type": "shell",// 任务脚本,可以是yarn/npm/git 等"command": "git",// 命令参数"args": ["fetch"],// 声明无需扫描脚本输出"problemMatcher": []}]
}

  1. 设置热键

在VS Code中打开:文件-首选项-键盘快捷方式,或者同时按下:Ctrl K S三个按键。此时你的VS Code会进入热键设置页面,在搜索栏搜索workbench.action.tasks.runTask或者任务: 运行任务,选中,并设置一个你习惯的组合式快捷键

比如我,设置的快捷键是:Ctrl + Alt + R

  1. 调用任务

使用你刚才定义的快捷键,如:Ctrl + Alt + R,你可以看到所有的任务列表,就包含你刚定义的内容,输入git-fetch,就能显示你刚才定义的任务。

94fd26456218e0b1a5050a9470658708.png
image.png

放心,只有第一次你需要输入任务名搜索,后续它都会推荐你最近使用过的任务。

选中任务,按下回车。

cf35d83c371b85971b80a2cff78158ad.png
VS Code终端栏里显示以上内容,则表示你的任务被成功执行了。

动手二:配置带参数选择或输入的任务

1. 在任务执行时选择分支

上面,我们已经成功设置了最简单的一任务,可以用来执行一些冗余的命令行,比如:
git pull base dev \--rebase
但缺乏动态参数,也主动了它的使用场景不够灵活。
以上面这条git pull base dev \--rebase为例,如果你的项目有多个分支,而你需要用命令在多个分支之间切换的话,"分别给devrelease分支创建任务"可实在是个太笨的办法了。
此时,如果有一个下拉框,让我们选择分支名,该多好啊...
嘿!
VS Code任务刚好有这方面的能力。
把你刚才的tasks.json做一下调整,如下:

{"version": "2.0.0","tasks": [{"label": "git-pull","type": "shell","command": "git","args": ["pull","base","${input:branch}", // 变量,会在下面的inputs中搜寻名叫branch的id"--rebase"],"group": "build","problemMatcher": []},],"inputs": [{"id": "branch", // 输入参数的id,与上面变量${input:branch}这个branch保持一致"type": "pickString","options": ["dev","release"],"description": "请输入分支"}],
}

执行'git-pull'任务,你会发现VS Code顶部弹出如下对话框:

6eaf61aab981eb3f417fdc6919ef44dd.png
选中你需要的分支,如:release

947816311e267186eb4b645f3b35f366.png
成功了!!
任务系统成功执行了你期望它拉取的分支。(虽然这个分支并不存在)

2. 在任务执行时输入参数

在上面2.1的例子里的inputs中加入一项:

{"type": "promptString","id": "branchName","description": "input your branch name","default": "release"}

并且,将tasks里,代表变量的那一行"${input:branch}",改成"${input:branchName}"
运行任务:

58bdd4ccbbf6c5be7c5429e0f8c803ee.png 可以看到,输入框可以带默认值,并且可以手动输入进行修改
按下回车,继续任务

db7b5fb0e229f1864a1f5c31f87ea7b4.png
tasks02.png

动手三:复合式任务,完成任务的排列组合

虽然上面完成了一些简单的任务配置,但当我们需要去完成一系列小任务时,就会显得非常不方便

正如文章开头的例子,依次完成了 stash push => pull => stash pop => push四个操作。

在之前步骤的基础上,在配置文件的tasks中增加两项任务:

tasks: [
...,{"label": "git-push","type": "shell","command": "git","args": ["pull","origin","${input:branchName}", // 变量],"problemMatcher": []},{"label": "git-pull-push","type": "shell","dependsOn": [ // 依赖的任务"git-pull","git-push"],"dependsOrder": "sequence", // 代表是依次执行,不设置会并行执行"problemMatcher": []}

配置完成后,在任务中选中:git-pull-push并执行。
在收入分支名时直接按下回车,使用默认的release作为分支名。

3c161c8ee9f9b4f542707ae8f47e91b0.png
image.png

控制台内,已经依次执行了git-pullgit-push两个任务。

outside_default.png
xingye2.gif

更多能力

更多细节,还请参考官方网站:
官网地址[3]

总结

通过以上例子,我们可以一窥VS Code任务系统的一角,感受到VS Code在私人订制上的巨大潜力。
可以进行一些畅享,通过任务系统配合代码生成脚本完成半自动的开发等等~~
快去配置你的VS Code任务配置吧!

关于本文

作者:春哥的梦想是摸鱼

https://juejin.cn/post/7035448197883363359

99979967f21d48d98c2d51065e7a652a.png

往期推荐

大厂面试过程复盘(微信/阿里/头条,附答案篇)

35322cd02d731e1a0ce0975a468fef34.png

面试题:说说事件循环机制(满分答案来了)

3a2baaed410394fe3bca486452ec800b.png

开发前端 CLI 脚手架思路解析

de7fc4cb006b997c16e81d22df70b466.png


最后

  • 欢迎加我微信,拉你进技术群,长期交流学习...

  • 欢迎关注「前端Q」,认真学前端,做个专业的技术人...

ce6f6301b7dbaa1fb26703844a653602.png

93c479d46b94a8a2334835db6d6dbef0.png

点个在看支持我吧

e64a34b467a8a42e323ba7aed471287c.gif


推荐阅读
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 本文探讨了在PHP中实现MySQL分页查询功能的优化方法与实际应用。通过详细分析分页查询的常见问题,提出了多种优化策略,包括使用索引、减少查询字段、合理设置缓存等。文章还提供了一个具体的示例,展示了如何通过优化模型加载和分页参数设置,显著提升查询性能和用户体验。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • Git核心命令全解析:掌握日常开发必备技能
    本文深入解析了 Git 的核心命令,帮助开发者掌握日常开发中的必备技能。从 `git init` 命令开始,介绍了如何将当前目录转变为 Git 可管理的仓库。接着详细讲解了 `git add` 命令的使用方法,包括如何将文件(如 `readme.txt`)添加到暂存区,以便在后续提交时进行版本控制。此外,还探讨了其他关键命令,如 `git commit` 和 `git push`,以确保代码变更能够安全地保存和同步到远程仓库。通过这些命令的综合应用,开发者可以更加高效地管理和协作项目。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 为了优化用户体验,本文探讨了如何调整下拉菜单的宽度。通过合理设置宽度,可以提升界面的美观性和易用性。文章提供了具体的代码示例,帮助开发者实现这一目标。例如,可以通过 CSS 或 JavaScript 来动态调整下拉菜单的宽度,确保其在不同设备和屏幕尺寸上都能保持良好的显示效果。 ... [详细]
  • 计算机视觉领域介绍 | 自然语言驱动的跨模态行人重识别前沿技术综述(上篇)
    本文介绍了计算机视觉领域的最新进展,特别是自然语言驱动的跨模态行人重识别技术。上篇内容详细探讨了该领域的基础理论、关键技术及当前的研究热点,为读者提供了全面的概述。 ... [详细]
author-avatar
写bug小能手
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有