webpack 打包优化

1、 按需加载 1.1 路由组件按需加载 1.2 第三方组件和插件。按需加载需引入第三方组件

2、优化 loader 配置 优化正则匹配 通过 cacheDirectory 选项开启缓存 通过 include、exclude 来减少被处理的文件。

module: {
  rules: [
    {
      test: /\.js$/,
      loader: "babel-loader?cacheDirectory",
      include: [resolve("src")],
    },
  ];
}

3、优化文件路径——省下搜索文件的时间

extension 配置之后可以不用在 require 或是 import 的时候加文件扩展名,会依次尝试添加扩展名进行匹配。 mainFiles 配置后不用加入文件名,会依次尝试添加的文件名进行匹配 alias 通过配置别名可以加快 webpack 查找模块的速度。

  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
    }
  },

4、生产环境关闭 sourceMap

sourceMap 本质上是一种映射关系,打包出来的 js 文件中的代码可以映射到代码文件的具体位置,这种映射关系会帮助我们直接找到在源代码中的错误。 打包速度减慢,生产文件变大,所以开发环境使用 sourceMap,生产环境则关闭。

5、代码压缩

6、提取公共代码 相同资源重复被加载,浪费用户流量,增加服务器成本。 每个页面需要加载的资源太大,导致网页首屏加载缓慢,影响用户体验。

7、CDN 优化

随着项目越做越大,依赖的第三方 npm 包越来越多,构建之后的文件也会越来越大。 再加上又是单页应用,这就会导致在网速较慢或者服务器带宽有限的情况出现长时间的白屏。

1、将 vue、vue-router、vuex、element-ui 和 axios 这五个库,全部改为通过 CDN 链接获取,在 index.html 里插入 相应链接。

2、在 webpack.config.js 配置文件

3、卸载依赖的 npm 包,npm uninstall axios element-ui vue vue-router vuex 4、修改 main.js 文件里之前的引包方式

8、使用 HappyPack 多进程解析和处理文件

由于运行在 Node.js 之上的 Webpack 是单线程模型的,所以 Webpack 需要处理的事情需要一件一件的做,不能多件事一起做。 HappyPack 就能让 Webpack 把任务分解给多个子进程去并发的执行,子进程处理完后再把结果发送给主进程。 HappyPack 对 file-loader、url-loader 支持的不友好,所以不建议对该 loader 使用。

使用方法如下:

HappyPack 插件安装: npm i -D happypack webpack.base.conf.js 文件对 module.rules 进行配置

在生产环境 webpack.prod.conf.js 文件进行配置

最后更新于

这有帮助吗?