webpack跟踪整个应用程序的import、export语句,因此,如果它看到导入的东西最终没有被使用,就会对其进行tree-shaking.
局限性
- 只能是静态声明和引用的ES6模块,不能是动态引入和声明的
- 只能处理模块级别,不能处理函数级别的冗余 因为webpack的tree-shaking是基于模块间的依赖关系,所以不能对模块内部自身的无用代码进行删除
- 只能处理JS相关冗余代码,不能处理CSS冗余代码
webpack配置
- 首先必须是生产模式
- 必须将优化选项"usedExports"设置为true.
- 使用一个支持删除丝带吗的压缩器。
const config ={
mode:'production',
optimization:{
usedExports:true,
minimizer:{
new TerserPlugin({...})
}
}
}