(webpack篇)7.Tree Shaking

140 阅读1分钟

概念:tree shaking是打包的时候,打包已经使用的代码,未使用的代码不会被打包。

一、配置

开发环境

  • 1.说明 开发环境中我们需要在webpack.config.js中配置
  • 2.webpack.config.js
...
module.exports = {
    ...
    mode: 'development',   // 指定构建模式
    ...
    optimization: {
        usedExports: true
    },
    output: {
        filename: '[hash]_[name].js',  // 指定构建生成的文件名
        path: path.resolve(__dirname, 'dist'), // 指定构建生成文件所在路径
    },
    ...
}
  • 3.package.json
{
  "name": "xxxx",
  "sideEffects": [
    "*.css"
  ],
  ...
}

说明:这里sideEffects配置 除了.css的文件不会使用tree shaking。同时,我们想要排除一些文件不适用tree shaking就可以在这里写入。

生产环境

  • 1.说明 生产环境我们只需要在package.json中进行

  • 2.webpack.config.js

...
module.exports = {
    ...
    mode: 'production',   // 指定构建模式
    ...
}
  • 3.package.json
{
  "name": "xxxx",
  "sideEffects": [
    "*.css"
  ],
  ...
}

二、案例

代码构建测试

  • 1.新建src/math.js
export const add = (a, b) => {
    console.log(a + b);
}

export const minus = (a, b) => {
    console.log(a - b);
}
  • 2.修改src/index.js
import { add } from './math.js'

add(2, 2);

两种模式下打包

  • 1.development模式下,可以看到注释提示
  • 2.production模式下,为引入的minus方法将不会被打包进去