Skip to content

Tree Shaking

【优化方向,节省空间】

1、在引入的模块中只打包使用过的方法。例如在模块A中导出add,reduce两个方法,在模块B中使用impor {add} from './A',webpack默认会打包模块A中所有的导出的方法。

2、只针对ES module才有效,原因是ES Module静态引入的方式,而Common.js Module使用的是动态引入。

注解:import 是静态加载只有在用到的时候才会去加载,而 require 只要声明了就会加载。【webpack 遇到了 require 就会把它当成一个模块加载到 bundle 的依赖里】 import&require

配置方法

1.1、如果mode是development,则需要配置optimization(n.最优化)。

1.2、如果mode是production,则不需要配置,webpack会自动执行默认的优化操作。

2、设置usedExports:true

js
optimization: {
    usedExports: true
}

3、 package.json中的配置 sideEffects配置为false时表示不针对任何额外的文件。

sideEffects配置数组时,忽略一些文件,不使用Tree Shaking功能。

js
sideEffects: ['*.css']

结尾的话

为了使得 tree-shaking 真正生效,引入资源时,仅仅引入需要的组件尤为重要