上一篇文章我寫了tapable的基本用法,我們知道他是一個增強版版的發布訂閱模式,本文想來學習下他的源碼。tapable的源碼我讀了一下,發現他的抽象程度比較高,直接扎進去反而會讓人雲里霧里的,所以本文會從最簡單的SyncHook和發布訂閱模式入手,再一步一步抽象,慢慢變成他源碼的樣子。 本文 ...
Tapable工具 完成webpack默認參數注入后,下一步雖然是new Compiler ,但是這東西不是一下可以講完的,復雜的一批。 不如先從工具入手,分塊講解compiler,首先來看看事件流執行器Tapable工具。 tips:這里的Tapable源碼來自於webpack內部自帶的tapable,如果通過npm i tapable查看會發現完全不一樣。 出現地點如下: 可以看到核心對象基本 ...
2017-12-14 15:34 1 1314 推薦指數:
上一篇文章我寫了tapable的基本用法,我們知道他是一個增強版版的發布訂閱模式,本文想來學習下他的源碼。tapable的源碼我讀了一下,發現他的抽象程度比較高,直接扎進去反而會讓人雲里霧里的,所以本文會從最簡單的SyncHook和發布訂閱模式入手,再一步一步抽象,慢慢變成他源碼的樣子。 本文 ...
_ 閱讀目錄 一:理解Sync類型的鈎子 1. SyncHook.js 2. SyncBailHook.js ...
此系列隨時可能斷更,畢竟我是解釋型源碼分析…… tips:本系列源碼版本為3.10.0 嘗試看過Spring的源碼,有點燒腦,所以還是重回JS吧! 在配置完環境變量后,可以通過webpack指令進行打包,需要知道的是,如果當前路徑存在webpack ...
先不進源碼,分析一下打包后的文件,來一張圖: 首先創建兩個JS文件,內容如下: 分別為配置文件和入口JS文件,內容弄個簡單的。 接下來在當前目錄執行webpack --config config.js,會輸出一個output.js,簡化后 ...
解決掉了最頭疼的DirectoryWatcher內部實現,這一節可以結束NodeWatchFileSystem模塊。 關於watch的應用場景,仔細思考了下,這不就是熱重載的核心嘛。 ...
寫在前面: 本來一開始想沿用之前vue源碼的標題:webpack源碼之***,但是這個工具比較巨大,所以為防止有人覺得我裝逼跑來噴我(或者隨時鴿),加上淺析二字,以示慫。 既然是淺析,那么案例就不必太復雜,所以繼續按照之前vue源碼,以最簡單形式進行源碼分析,如下: 配置文件 ...
validateSchema模塊 首先來看錯誤檢測: 可以注意到,這里傳了兩個參數,其實第一個參數來源於一個JSON文件: 這個JSON文件非常大, ...
前不久寫了一篇webpack基本原理和AST用法的文章,本來想接着寫webpack plugin的原理的,但是發現webpack plugin高度依賴tapable這個庫,不清楚tapable而直接去看webpack plugin始終有點霧里看花的意思。所以就先去看了下tapable的文檔和源碼 ...