自訂插件(進階)


#首先,我們應該明確一點,作為一個通用的程序,是不應該在核心裡面有過多的私有定制需求的,如想在 gulp dev 後列出根目錄下所有的html 功能,想在 gulp ftp 上傳成功後直接彈出瀏覽器窗口,斯認為,侵入性過強,不應作為一個通用工作流的集成的功能,所以,我們提供了 外掛程式 功能。

tmt-workflow 不僅提供了多個常用任務,還開放了各個常用任務的回調接口,您只需按node 的方式編寫插件,即可自行根據具體需求設計自己想要的功能,使得使用者不需要通讀 tmt-workflow 原始碼,就可以擴充自己想要的任務,既降低了學習成本,也降低了工作流程的耦合度。

下面,我們以一個簡單的範例說明如何使用 自訂外掛程式 功能。

1. 設定 .tmtworkflowrc

   //插件功能
   //路径相对于 tasks/plugins 目录
  "plugins": {
    "build_devAfter": ["TmTIndex"],  //build_dev 任务执行后自动执行
    "build_distAfter": [],           //build_dist 任务执行后自动执行
    "ftpAfter": ["ftp"]              //ftp 任务执行后自动执行
  },

如上,每個欄位屬性對應各個任務,以陣列形式指定插件,依序執行陣列指定的插件,如我們給我們的外掛程式命名為 TmTIndex

2. 在 _tasks/plugins/ 目錄下新建TmTIndex.js

var rd = require('rd');
var fs = require('fs');
var path = require('path');

//插件必需按 node 模块规范编写
module.exports = function (config) {
    // do some stuff ...
}

如上,插件只需要按node 模組規格編寫,就可以實現你要的功能。

可以看到,擴充插件只需要兩步,具體想實現什麼樣的功能,可根據具體的需求進行客製化。

我們內部已透過外掛功能擴展了多個客製化需求,哪裡不明白隨時 Issues 。


#