先前使用的 url-loader 在處理圖片上,還有些不足的地方,其他沒轉成 base64 圖片就沒處理到優化,沒有處理轉換的圖片就可透過壓縮處理,這樣的流程處理就可讓 images-webpack-loader 處理。
安裝 images-webpack-loader
終端機透過指令來安裝。
1  | npm install --save-dev image-webpack-loader  | 
設定 images-webpack-loader
images-webpack-loader 加入的內容如下,但需整合與 url-loader 共用,要接續處理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19  | {   loader: 'image-webpack-loader',   options: {     mozjpeg: {       progressive: true,       quality: 65,     },     optipng: {       enabled: false,     },     pngquant: {       quality: '65-90',       speed: 4,     },     gifsicle: {       interlaced: false,     },   }, },  | 
共用的部份到 test: /\.(jpe?g|png|gif)$/, 與 url-loader 共用,把 image-webpack-loader 接到 url-loader 下面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31  | {   test: /\.(jpe?g|png|gif)$/,   use: [     {       loader: 'url-loader',       options: {         limit: 8192,         name: '[path][name].[ext]?[hash:8]',       },     },     {       loader: 'image-webpack-loader',       options: {         mozjpeg: {           progressive: true,           quality: 65,         },         optipng: {           enabled: false,         },         pngquant: {           quality: '65-90',           speed: 4,         },         gifsicle: {           interlaced: false,         },       },     },   ], },  | 
image-webpack-loade 執行壓縮圖片的前後差別
讓 image-webpack-loade 先執行處理壓縮圖片後,接著在進行 url-loader 的 base64 轉換圖片,處理後得程式碼如下。
接著到 Scss 檔中設定背景圖片的 url() ,給上不同的 id 對應不同的圖片 ( #box2 裡的 url 是 '~b2.jpg')。
 
針對 index.html 檔中,再加入使用樣式的對應 id 結構。
 
執行指令 npm run deploy,在執行完成編譯後的 dist 資料夾,裡面就會出現沒有轉存 base64 的圖片在 images 資料夾中。
 
比對 src/images 與 dist/images 編譯後的差別,以圖片 a1.jpg 來說原始圖片是 49.4kb 而處理後變成 46.2kb。
 
 
另外以 cat2.jgp 來說就也是一樣有進行較多的壓縮處理。
 
