webpack-plugin篇

2、webpack核心模塊——tapable

tapable 是 webpack 的一個(gè)核心工具,但也可用于其他地方,以提供類(lèi)似的插件接口。tapable模塊中暴露了Hook類(lèi),pugins都是注冊(cè)在Hook的實(shí)例化對(duì)象上,這個(gè)類(lèi)暴露?tap,?tapAsync?和?tapPromise?方法,webpack中的插件會(huì)將所需執(zhí)行的函數(shù)通過(guò)tap 、tapAsync 、tapPromise等方法注冊(cè)到對(duì)應(yīng)鉤子上。這樣,webpack調(diào)用相應(yīng)鉤子時(shí),散落在各文件的插件就會(huì)自動(dòng)執(zhí)行

插件類(lèi)型:同步事件(sync)、異步并行事件(asyncParallel)、同步串行事件(asyncSeries)

compiler對(duì)象——hooks(對(duì)應(yīng)的編譯周期詳情見(jiàn)https://www.webpackjs.com/api/compiler-hooks/

sync插件用法及原理:

? ? ? 1、事件注冊(cè)

usage : compiler.hooks.beforeRun.tab( option , fn )?

option : String || Object = { name:xxx , before:String || [] , stage:number }

option支持String或Object格式,如果傳入對(duì)象,必須寫(xiě)name屬性,相當(dāng)于string;before:注冊(cè)的插件在哪些插件的前面,值可為string=>xxxplugin.name或者 [xxxplugin.name,xxxplugin2.name,...arg];stage:權(quán)重,權(quán)重大的排在事件管理中心的后面,默認(rèn)stage=0。

? ? ? 2、事件觸發(fā)

? ? ? compiler.hooks.beforeRun.callAsync(compiler,()=>{})

? ??基本原理:

? ??????

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過(guò)簡(jiǎn)信或評(píng)論聯(lián)系作者。

友情鏈接更多精彩內(nèi)容