Webpack 中的 Tree Shaking

Tree Shaking

Tree shaking 用于描述移除JavaScript上下文中的未引用代码(dead-code)。

为了更方便地理解tree shaking,我们可以将应用程序想象成一棵树

绿色表示实际用到的 source code(源码) 和 library(库),是树上活的树叶

灰色表示未引用代码,是秋天树上枯萎的树叶

为了除去死去的树叶,你必须摇动这棵树(shake this tree),使它们落下。

如何使用

  • 使用 ES2015 模块语法(即 importexport )
  • 确保没有compiler将ES2015模块语法转换为CommonJS模块(即 require )
  • package.json 文件中,添加 sideEffects 属性,表示有副作用的模块文件,使用false 表示所有模块文件均无副作用
  • 通过将 mode 选项设置为 production,启用 minification (代码压缩) 和 tree shaking

副作用

在导入时会执行特殊行为的代码,而不是仅仅暴露一个 export 或多个 export

举例说明,例如 polyfill,它影响全局作用域(在各类的 prototype 中加入方法),并且通常不提供 export。

或者使用 css-loader 然后 import css文件,虽然引入后并没有进行使用,但是这些css文件是有副作用的(修改样式)。

因此对于这种有副作用的模块,即使未被使用,也不能将其删除。

sideEffects

// 所有模块均无副作用
{
  "name": "your-project",
  "sideEffects": false
}

// 声明有副作用的模块
{
  "name": "your-project",
  "sideEffects": [
    "./src/some-side-effectful-file.js",
    "*.css"
  ]
}

参考链接:

https://webpack.docschina.org/guides/tree-shaking/

转载于:https://www.cnblogs.com/zmj97/p/10942596.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值