0%

tree shaking(摇树优化)

  • 概念:1 个模块可能有多个方法,只要其中的某个方法使用到了,则整个文件都会被打到bundle 里面去,tree shaking 就是只把用到的方法打入 bundle ,没用到的方法会在uglify 阶段被擦除掉
  • 使用:
    • webpack 默认支持,在 .babelrc 里设置 modules: false 即可
    • production mode的情况下默认开启
  • 要求:
    • 必须是 ES6 的语法,CJS 的方式不支持
    • 需要tree shaking的模块代码是没有副作用的,否则tree shaking会失效
  • Tree Shaking的使用和原理分析
阅读全文 »

缩小构建目标

  • 目的:尽可能的少构建模块

  • 比如 exclude 不解析相应的模块,目录。include 只解析解析相应的模块,目录

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    module: {
    rules: [
    {
    test: /\.js$/,
    //?cacheDirectory=true 开启缓存
    use: 'babel-loader?cacheDirectory=true',//使用babel-loader解析ES6
    exclude: 'node_modules',
    include: 'src'
    }
    ]
    }
阅读全文 »

缓存

阅读全文 »

分包:设置 Externals

  • 思路:将 react、react-dom 基础包通过 cdn 引入,不打入 bundle 中
  • 方法:使用 html-webpack-externals-plugin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//在配置文件中添加HtmlWebpackExternalsPlugin插件
new HtmlWebpackExternalsPlugin({
externals: [
{
module: 'react',
entry: 'https://cdn.bootcss.com/react/15.6.1/react.js',
global: 'React'
},
{
module: 'react-dom',
entry: 'https://cdn.bootcss.com/react/15.6.1/react-dom.js',
global: 'ReactDOM'
},
],
})
阅读全文 »