18 为你的项目打造Workflow(上)

执行任务

任务系统的目的,是将各种形形色色的任务脚本尽可能地统一化,然后提供一套简单但又定制化强的方式操作它们。

这里举个我自己的例子。比如,我在使用 git 进行版本管理,当我在终端里要创建一个的新的分支时,得输入 “git checkout -b branchName”,但是要每次都打全这个命令太麻烦了,于是我自己创建了一个 bash 的别名(alias)gco 用来替代 “git checkout -b”。而 VS Code 的版本管理更近了一步,它在状态栏上添加了一个按钮,我只需点击一下状态栏,就可以创建分支了。

任务系统也希望提供一样的效果,比如把我们日常使用的脚本命令,通过命令面板或者快捷键迅速执行,并且还可以将这一套快捷操作的方式,分享给工作在同一个项目上的同事。

任务自动检测

从我们已经写好的脚本里把任务读取出来。

打开命令面板,搜索 “运行任务”(Run Task)

如果你的项目或者文件夹里有 typescript、grunt、jake、gulp、npm 这几个脚本工具的配置文件的话,VS Code 会自动读取当前文件夹下的配置。

自定义任务

在命令面板里,搜索 “配置任务”(Configure Task)并执行。

默认情况下,VS Code 为 MSBuild、Maven、.NET Core 提供了模板,而最后一个 Others,则是一个通用的模板,我们选择它。

选择完 Others 之后,VS Code 在当前文件夹根目录下的 .vscode 文件夹中,创建了 tasks.json 文件。

 

 

 

label 标签 任务的名字 在命令面板里执行任务会需要读到它,所以它的值应该尽可能地描述这个任务是干什么的。

type 类型  对于自定义的任务来说,这个类型可以有两种选择,一种是(process)这个任务被当作进程来运行,另一种则是(shell)在 shell 中作为命令行来运行。

command,它代表着我们希望在 shell 中运行哪一个命令,或者我们希望运行哪个程序。

打开命令面板,搜索“运行任务”,选择“echo”这个任务(label里的名字)

按下回车后,VS Code 会问我们 “选择根据何种错误和警告扫描任务输出”,这个问题涉及到任务系统的另一个重要功能,我会在后面介绍,现在就选择第一个选项 “继续而不扫描任务输出” 好了。

 

“type” 类型,还支持 “process”, 也就是以进程的形式运行。这时就需要在 “command” 里提供程序的地址。比如下面的例子里,我提供了 Chrome 浏览器在 macOS 下的地址。

{
"version": "2.0.0",
"tasks": [
{
"label": "chrome",
"type": "process",
"command": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
}
]
}

 

同一个配置文件共享时,根据不同的系统Windows 或者 Linux 系统指定特定的地址

{
"version": "2.0.0",
"tasks": [
{
"label": "chrome",
"type": "process",
"command": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
"windows": {
"command": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
},
"linux": {
"command": "/usr/bin/google-chrome"
}
}
]
}

分组和结果显示

在下面的任务里,我们能够看到 “label”“type”“command” 这几个熟悉的属性,它们的意思是,在 shell 下运行 “./scripts/test.sh” 这个脚本。

 “group” “presentation” 和 “options”三个属性,它们分别是干什么的呢?

{
"version": "2.0.0",
"tasks": [
{
"label": "test shell",
"type": "shell",
"command": "./scripts/test.sh",
"windows": {
"command": ".\\scripts\\test.cmd"
},
"group": "test",
"presentation": {
"reveal": "always",
"panel": "new"
},
"options": {
"cwd": "",
"env": {},
"shell": {
"executable": "bash"
}
}
}
]
}

 

“group” 属性就是分组,我们可以通过这个属性指定这个任务被包含在哪一种分组当中。关于分组,我们有三种选择:“build” 编译生成、“test”测试和 “none”。

如:设置为了 “test”。那么,在命令面板里搜索 “运行测试任务” (Run Test Task) 时,这个任务会被显示出来。如果改为 “build”,那么在我们执行 “运行生成任务” (Run Build Task)时,能够看到它。

设置分组默认任务,而不需要在去从下拉列表选择运行某一个。如下修改“group”配置

"group": { "isDefault": true, "kind": "test" },

isDefault” 代表着这条任务是不是这个分组中的默认任务,“kind” 则是代表分组。

此时执行 “运行测试任务” (Run Test Task) 命令时,这条测试任务被直接执行了(没有选择列表)。

“presentation” 是用于控制任务运行的时候,是否要自动调出运行的界面,让我们看到结果,或者是否要新创建一个窗口执行任务;

“options” 则是用于控制任务执行时候的几个配置,比如控制任务脚本运行的文件夹地址 “cwd”,控制环境变量 “env”,或者控制任务脚本运行的时候使用哪个 shell 环境。

posted @ 2020-04-13 11:53  vvf  阅读(182)  评论(0)    收藏  举报