打包文件太大

一般情况下,直接require第三方库,比如jquery,然后webpack会自动把第三方库打包进bundle.js里面去,这样就造成了三个问题:

  1. bundle.js的文件会非常大
  2. 每次更新bundle.js的时候根本没有更新第三方库,但是用户仍然要下载包含所有第三方库的bundle.js,不利于缓存
  3. 更新第三方库的时候很麻烦,又要重新下bundle.js。(虽然这种情况很少)

 这里暂且提出一个解决方案

  在webpack.prod.conf.js中写入如下代码:

let checksArray = {
   //例如:
  'element-ui': ['element-ui'],
}

let plugsArray = []
Object.keys(checksArray).forEach((key1, index1) => {
  let modules = []
  Object.keys(checksArray).forEach((key2, index2) => {
    if (index1 <= index2) {
      modules = modules.concat(Array.isArray(checksArray[key2])?checksArray[key2]:[checksArray[key2]])
    }
  })

  let minChunks = (function (modules) {
    return function (module) {
      let result = false
      modules.forEach((name)=>{
        result = result || module.resource.toLowerCase().indexOf(name) !== -1
      })
      return (
        module.resource &&
        /\.js$/.test(module.resource) &&
        module.resource.indexOf(
          path.join(__dirname, '../node_modules'),
        ) === 0 && result
      )
    }
  }(modules))

  let plugs = new webpack.optimize.CommonsChunkPlugin({
    name: key1,
    minChunks,
  })
  plugsArray.push(plugs)
})

const webpackConfig = merge(baseWebpackConfig, {
  plugins: [
    ...plugsArray,
  ],
})

即可对代码的包进行分割。

 

转载于:https://www.cnblogs.com/zhouyideboke/p/10519114.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值