1. 程式人生 > 其它 >webpack學習:mini-css-extract-plugin原始碼瞭解

webpack學習:mini-css-extract-plugin原始碼瞭解

mini-css-extract-plugin 是用來把所有css提取打包成一個檔案的外掛,uni把vue檔案的css打包成wxss檔案就是使用此外掛完成的。這個外掛還內建了一個處理css的loader

mini-css-extract-plugin的loader作用

位置在mini-css-extract-plugin/dist/loader,該loader只有一個pitch函式,每一個css檔案走到picth時都會通過createChildCompiler方法建立了一個childCompiler,childCompiler會把其他的css相關loader走一遍,然後返回結果通過addDependencies方法
在module裡面新加入了一個cssModule

mini-css-extract-plugin

主要操作在renderManifest鉤子裡,新增了一個Manifest,render方法的核心在renderContentAsset,該方法把每一個chunk裡的cssModule內容合併成一個然後返回,剩下的就交給webpack把返回回來的source變成檔案,然後html-webpack-plugin把所有的檔案放到一個html裡。

該外掛配合uni把vue打包成小程式存在一個問題:extract外掛有2個關於mainTemplate鉤子是用來處理非同步載入的css的。會在runtime.js裡面儲存所有非同步的元件路徑,等非同步chunk載入時會把非同步chunk的css一起載入,本身是沒有問題的,但是配合uni使用有2個問題

1 小程式是通過包來載入的,所以相關的非同步程式碼並沒有執行,也就是說runtime.js裡存在沒有使用的程式碼,還佔了主包的體積。
2 uni把所有元件的引用都改為非同步引用,其實這是沒必要的,第一點說了,小程式是一個包一起載入好的。
2點加起來導致來主包變大,我公司的就佔據了70kb!!!。