webpack tree-shaking

149 阅读1分钟

webpack跟踪整个应用程序的import、export语句,因此,如果它看到导入的东西最终没有被使用,就会对其进行tree-shaking.

局限性

  • 只能是静态声明和引用的ES6模块,不能是动态引入和声明的
  • 只能处理模块级别,不能处理函数级别的冗余 因为webpack的tree-shaking是基于模块间的依赖关系,所以不能对模块内部自身的无用代码进行删除
  • 只能处理JS相关冗余代码,不能处理CSS冗余代码

webpack配置

  • 首先必须是生产模式
  • 必须将优化选项"usedExports"设置为true.
  • 使用一个支持删除丝带吗的压缩器。
const config ={
   mode:'production',
   optimization:{
     usedExports:true,
     minimizer:{
       new TerserPlugin({...})
     }
   }
}