自定義插件(高級(jí))

2018-11-15 17:52 更新

首先,我們應(yīng)該明確一點(diǎn),作為一個(gè)通用的程序,是不應(yīng)該在核心里面有過(guò)多的私有定制需求的,如想在 gulp dev 后列出根目錄下所有的 html 功能,想在 gulp ftp 上傳成功后直接彈出瀏覽器窗口,斯認(rèn)為,侵入性過(guò)強(qiáng),不應(yīng)作為一個(gè)通用工作流的集成的功能,所以,我們提供了 插件 功能。

tmt-workflow 不僅提供了多個(gè)常用任務(wù),還開(kāi)放了各個(gè)常用任務(wù)的回調(diào)接口,您只需按 node 的方式編寫(xiě)插件,即可自行根據(jù)具體需求設(shè)計(jì)自己想要的功能,使得用戶不需要通讀 tmt-workflow 源碼,就可以擴(kuò)展自己想要的任務(wù),既降低了學(xué)習(xí)成本,也降低了工作流的耦合度。

下面,我們以一個(gè)簡(jiǎn)單的示例說(shuō)明如何使用 自定義插件 功能。

1. 配置 .tmtworkflowrc

   //插件功能
   //路徑相對(duì)于 tasks/plugins 目錄
  "plugins": {
    "build_devAfter": ["TmTIndex"],  //build_dev 任務(wù)執(zhí)行后自動(dòng)執(zhí)行
    "build_distAfter": [],           //build_dist 任務(wù)執(zhí)行后自動(dòng)執(zhí)行
    "ftpAfter": ["ftp"]              //ftp 任務(wù)執(zhí)行后自動(dòng)執(zhí)行
  },

如上,每個(gè)字段屬性對(duì)應(yīng)各個(gè)任務(wù),以數(shù)組形式指定插件,依次執(zhí)行數(shù)組指定的插件,如我們給我們的插件命名為 TmTIndex

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

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

//插件必需按 node 模塊規(guī)范編寫(xiě)
module.exports = function (config) {
    // do some stuff ...
}

如上,插件只需要按 node 模塊規(guī)范編寫(xiě),就可以實(shí)現(xiàn)你要的功能。

可以看到,擴(kuò)展插件只需要兩步,具體想實(shí)現(xiàn)什么樣的功能,可根據(jù)具體的需求進(jìn)行定制。

我們內(nèi)部已通過(guò)插件功能擴(kuò)展了多個(gè)定制需求,哪里不明白隨時(shí) Issues 。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)