webpack-tree shaking

介绍

tree shaking的作用:去除无用代码,减少代码体积

开启的前提:

1、必须使用es6模块化

2、在production环境中运行

测试

test.js中创建3个方法,并且test和test2方法在index.js中引用并使用,而test3没有地方使用

console.log('test.js执行了')

export function test() {
    const value = 'hello world'
    console.log('test value: ', value)
}

export function test2(arr) {
    if (!arr || arr.length <= 0) {
        console.log('test2 传参错误')
        return
    }
    const result = arr.reduce((sum, current) => sum += current, 0)
    console.log('test2  result: ', result)
}
export function test3(a, b) {
    console.log('test3 执行力')
    return a + b
}

执行webpack之后查看输出文件built.js文件。

因为是生产环境,所以代码被压缩了,直接搜索test,test2,test3

搜索test:

搜索test2:

 搜索test3:

 从搜索结果可以看出,test,test2都被打包了,而test3因为没有地方引用,所以没有被打包进built.js中。

所以tree shaking可以去除无用代码,减少代码体积,从而提升构建速度。

通过sideEffects控制被tree shaking的文件”

在package.json文件中设置sideEffects属性

设置"sideEffects":false

删除build文件之后重新执行webpack命令之后会发现输出文件中没有css文件夹,也就是所有的css,less文件都没有打包。

 

解释:设置sideEffects为false意味着告诉webpack所有的代码都没有副作用,都可以进行tree shaking。

所以当设置siedeEffects为false时,会将一些只需引用不需要调用的代码也作为无用文件处理了,例如样式文件等

排序需要的文件

既然直接设置sideEffects为false会将样式文件等一些需要的文件作为无用文件处理,我们可以排除这些文件,设置"sideEffects":["*.css","*.less"]

这样重新运行webpack命令,就会发现打包输出文件中有css文件夹中了。

设置  "sideEffects":true 

设置  "sideEffects":true和不设置sideEffects是一样的效果

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值