webpack體積優化篇二(GZ壓縮)


這里我列舉幾個常用的能夠用於減少包體大小的插件,我們可以根據項目需求選擇性的使用:
compression-webpack-plugin :該插件能夠將資源文件壓縮為.gz文件,並且根據客戶端的需求按需加載。
dedupeplugin :抽取出輸出包體中的相同或者近似的文件或者代碼,可能對於 Entry Chunk 有所負擔,不過能有效地減少包體大小。
uglifyjsplugin :壓縮輸出塊的大小,可以參考官方文檔。
ignoreplugin :用於忽略引入模塊中並不需要的內容,譬如當我們引入moment.js時,我們並不需要引入該庫中所有的區域設置,因此可以利用該插件忽略不必要的代碼。
...
var CompressionPlugin = require("compression-webpack-plugin");
...
let config = {
entry: path.join(__dirname, '../app/index'),
cache: false,
devtool: 'cheap-module-source-map',
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': '"production"'
}),
new webpack.optimize.DedupePlugin(),
new webpack.optimize.UglifyJsPlugin({
mangle: true,
compress: {
warnings: false, // Suppress uglification warnings
pure_getters: true,
unsafe: true,
unsafe_comps: true,
screw_ie8: true
},
output: {
comments: false,
},
exclude: [/\.min\.js$/gi] // skip pre-minified libs
}),
new webpack.IgnorePlugin(/^\.\/locale$/, [/moment$/]),
new webpack.NoErrorsPlugin(),
new CompressionPlugin({
asset: "[path].gz[query]",
algorithm: "gzip",
test: /\.js$|\.css$|\.html$/,
threshold: 10240,
minRatio: 0
})
...
]
整體壓縮的一些配置
 
重點: 簡單介紹下其中的GZ壓縮
compression-webpack-plugin :該插件能夠將資源文件壓縮為.gz文件,並且根據客戶端的需求按需加載。
var CompressionPlugin = require("compression-webpack-plugin");
module.exports = {
    plugins: [
        new CompressionPlugin({
            asset: "[path].gz[query]",
            algorithm: "gzip",
            test: /\.(js|html)$/,
            threshold: 10240,
            minRatio: 0.8
        })
    ]
}
 
參數:
  • asset:目標資產名稱。[file]被替換為原始資產。[path]被替換為原始資產的路徑和[query]查詢。默認為"[path].gz[query]"。
  • filename:A function(asset)接收資產名稱(處理后的asset選項)並返回新的資產名稱。默認為false。
  • algorithm:可以是一個function(buf, callback)或一個字符串。對於一個字符串,算法取自zlib(或zopfli for zopfli)。默認為"gzip"。
  • test:處理與此RegExp相匹配的所有資產。默認為每個資產。
  • threshold:只處理大於此大小的資產。以字節為單位 默認為0。
  • minRatio:只有壓縮得更好的資產才能處理這個比率。默認為0.8。
  • deleteOriginalAssets:是否刪除原始資產?默認為false。
Zopfli的選項參數(有關詳細信息,請參閱 node-zopfli doc):
  • verbose:默認值:false,
  • verbose_more:默認值:false,
  • 編號:默認值:15,
  • blocksplitting:默認值:true,
  • blocksplittinglast:默認值:false,
  • blocksplittingmax:默認值:15
成功就看可以看到:

 

看到你就成功了,塌坑路上不孤獨。。。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM