# 是Task管理器而非我們理解的系統任務管理器
暈......其實我都不知道自己在說什么!!!原諒我是菜鳥!
用`gulp.js`的小伙都知道有個*gulp.task()*,是的,就是這個`"task"`了!
其實,不止gulp.js 有Task,其他的工具也有的,只是它們不全叫“Task”罷了。反正是一個類似任務腳本的東西,可以是腳本啟動器或者任務腳本或者命令......
> 菜鳥的世界你不用懂!
為執行一個任務,可能你需要翻來覆去看好幾遍腳本配置文件,然后才理出具體的任務名稱(*例如gulp任務執行命令:`gulp XXXX`*),任務少的還好說,如果任務多了,那就........我們總需要有工具能幫忙列出所有的任務名稱,即點即運行。
`懶人總是需要借助工具的,不然就是真懶了,懶也要懶得理直氣壯。`

## Task Master
`Task Master` 就是這么個工具,它能自動在項目文件夾下找到腳本配置文件(例如:*gulpfile.js*),然后把腳本中的全部任務列出,便于點擊執行。省去手動輸入命令的麻煩!
>(類似這種工具的插件挺多的,我只說我用過的。)
它支持的腳本(TASK)類型:
* 支持 NPM Tasks.
* 支持 Gulp Tasks.
* 支持 Shell Scripts.
* 支持 Python Scripts.
* 支持 Ruby Scripts.
* 支持 Perl Scripts
* 支持 Powershell Scripts (Experimental)
----
### 1. 安裝
正常安裝,不需要進行配置,當然某些腳本你不想通過它來執行或者被它檢測到,你可以在【設置】中排除。
```
# 設置位置在這: Task Master Configuration
# 排除的目錄,因為往往一個項目,我們需要引入其他的插件,
# 而那些插件也都是有task 任務的,為了避免混淆自己的腳本任務,最好將在檢測路徑中排除。
# 它默認排除: **/node_modules
"task-master.excludesGlob": [
"**/node_modules"
]
# 以下腳本類型,不允許的設置為:false,默認:true。
// Enables the scanning of Gulp tasks.
"task-master.enableGulp": true,
// Enables the scanning of NPM tasks.
"task-master.enableNpm": true,
// Enables the scanning of Shell scripts.
"task-master.enableShell": true,
// Enables the scanning of Python scripts.
"task-master.enablePython": true,
// Enables the scanning of Ruby scripts.
"task-master.enableRuby": true,
// Enables the scanning of Perl scripts.
"task-master.enablePerl": true,
// Enables the scanning of Powershell scripts.
"task-master.enablePowershell": true,
```
----
### 1. 使用
使用就簡單多了,它不用按ctrl+shift+p進入命令欄,它在底部菜單欄左側生成有按鈕,點擊一下即可列出任務(TASK)名稱,點擊相應的任務即可運行。不用在終端中輸入命令。
它沒發現的任務配置文件的時候,是:`一個放大鏡+Scanning for Tasks`按鈕,此時點了沒反應。
在它發現任務配置文件的時候,會變成:“Tasks”按鈕,點擊就能看到,自己寫的命令了,然后再選擇相應的任務即可會運行。
對于和我一樣,自己寫的腳本任務自己都不認識或者忘記任務名的小伙伴來說,這個插件確實給力。
----
### 2. 槽點
就是它反應有點慢(我指的是:它檢查任務配置腳本的速度)有時候可能需要重新打開窗口(`重啟vscode`)才能正常檢測到。不過這些都還是能忍受的。但看在它能在任何項目目錄中都能工作,這點小缺點不算什么。比起vscode每個項目的task快速運行配置(*目前支持gulp和grunt的任務項*)都要自己寫一遍實在方便多了。
> 新版的vscode已經支持gulp和grunt在命令欄列出任務名并點擊執行。它支持的有好幾個,只是這兩個是默認支持,寫入全局設置中,你能夠在全局設置中找到它們的配置項。
----
### 3. 使用繁瑣程度,可能比vscode自帶的要滴很多
最新版的`vscode` 已經默認支持gulp.js 和grunt.js的任務運行項了,也支持列出任務列表,但是使用繁瑣,還需要自己配置任務項——簡而言之就是vscode自帶的管理器不能自動檢測識別腳本任務名稱。而且需要通過命令欄來執行任務,實在不算做的好,但是會在項目的根目錄生成`.*`文件,這是我們不希望發生的,畢竟還要自己寫.gitignore文件排除.vscode 呢。
相比之下,Task Master 是不是好很多!而且支持多種腳本。
>如果你正在學習或者使用那些腳本命令,那么Task Master 應該適合你。
## 只此一家?NO
因為大部分項目的自動化構建往往都需要腳本命令來完成,這使得腳本命令(任務名稱)的管理成為一個剛需,所以此類插件是很多的,只是我一直在用它,所以也就介紹給大家,正常情況下在擴展應用管理中搜類似 “task”等關鍵詞都能找到類似的任務管理器。就看哪一款適合你了。
----
# 小段結尾
前面我一直說,新版vscode支持Task 在命令欄列出并支持點擊運行,那么到底怎么用呢?
* 首先,你的項目是自動化構建的,哪怕簡單的less自動生成CSS文件。如果你的項目不需要這些,則沒必要弄了。
* 其次,要有自動構建環境以及配置腳本文件,例如:*gulpfile.js*
* 最后,你可以自己手動創建文件:`.vscode/tasks.json` --->
```
# 其實是文件夾加文件:
.vscode
------/tasks.json
```
`tasks.json` 的大概(基本)代碼例子:
```
{
"version": "0.1.0",
"command": "echo",
"isShellCommand": true,
"args": [],
"showOutput": "always",
"echoCommand": true,
"suppressTaskName": true,
"tasks": [
{
"taskName": "hello",
"args": ["Hello World"]
},
{
"taskName": "bye",
"args": ["Good Bye"]
}
]
}
```
只能說,它支持的功能比較多,配置項上也會更多,當你專注于一個項目時可能實用,但像我這種“好多項目”的人,標配懶人模式可能比較適合。
**具體用法用例:[https://code.visualstudio.com/docs/editor/tasks](https://code.visualstudio.com/docs/editor/tasks)**
**當你的團隊或者項目不需要這些時,提交的時候記得排除。**
這結尾似乎長了點,我們就先到這吧!