1. 更新到最新版本
    2. 将 loader 应用于最少数量的必要模块
    3. 引导(bootstrap)
      1. 每个额外的 loader/plugin 都有其启动时间。尽量少地使用工具
    4. 提高解析速度
      1. 减少 resolve.modules,resolve.extensions,resolve.mainFiles,resolve.descriptionFiles 中条目数量,因为他们会增加文件系统调用的次数
      2. 如果不使用 symlinks (例如 npm link 或者 yarn link),可以设置 resolve.symlinks: false
      3. 如果使用自定义 resolve.plugin 规则,并且没有指定 context 上下文,可以设置 resolve.cacheWithContext: false
    5. 减少编译结果的整体大小,以提高构建性能。尽量保持 chunk 体积小
      1. 使用数量/体积更小的 library
      2. 在多页面应用程序中使用 SplitChunksPlugin,并开启 async 模式
      3. 移除未引用代码
      4. 只编译当前正在开发的代码
    6. 使用持久化缓存

      1. 在 webpack 配置中使用 cache 选项。使用 package.json 中的 “postinstall” 清除缓存目录
      2. 将 cache 类型设置为内存或者文件系统。memory 选项很简单,它告诉 webpack 在内存中存储缓存,不允许额外的配置
        1. module.exports = {
        2. // ...
        3. cache: {
        4. type: 'memory'
        5. }
        6. }
    7. 自定义 plugin/loader 的时候要分析性能问题

    8. 将 ProgressPlugin 从 webpack 中删除,可以缩短构建时间。请注意,ProgressPlugin 可能不会为快速构建提供太多的价值,因此要权衡利弊再使用
    9. 使用 DllPlugin 为更改不频繁的代码生成单独的编译结果。这可以提高应用程序的编译速度,尽管它增加了构建过程的复杂度。
    10. 多线程打包
      1. 使用 thread-loader 将非常消耗资源的 loader 分流给一个 worker pool