Vue 3 编译慢 包分析

2 篇文章 0 订阅

转:Vue 项目编译时间过长问题 - 简书

1. 使用 webpack-bundle-analyzer 分析项目外部依赖大小

# NPM
npm install --save-dev webpack-bundle-analyzer
# Yarn
yarn add -D webpack-bundle-analyzer

官网显示的使用方法,需要在 webpack.config.js 内配置:

const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;

module.exports = {
  plugins: [
    new BundleAnalyzerPlugin()
  ]
}

而我们的项目是使用 vue-cli3 搭建,其内置 webpack (也就是没有 webpack.config.js),因此我们找到 vue.config.js 使用如下代码引入插件:

// vue.config.js
module.exports = {

  chainWebpack: config => {
    //*//
    config
      .plugin('webpack-bundle-analyzer')
      .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
  },
}

此时运行 yarn serve 会执行 webpack-bundle-analyzer 插件 BundleAnalyzerPlugin 的默认功能

 serve 完成,会在浏览器自动生成依赖大小分析的可视化网站,如下图所示

 

2. 使用 webpack 外部扩展(externals)

防止将某些 import 的包(package)打包到 bundle 中,而是在运行时(runtime)再去从外部获取这些扩展依赖

使用前打包时间

 

使用 externals 过滤我们希望通过 cdn 引入的依赖,同样在 vue.config.js 配置:
(注意所需依赖的别名)

// vue.config.js
module.exports = {

  chainWebpack: config => {
    //*//
    config.externals({
      'axios': 'axios',
      'vue': 'Vue',
      'vue-router': 'VueRouter',
      'vuex': 'Vuex',
      'element-ui': 'ELEMENT' // 注意此处要全大写且 Vue.use(ELEMENT)
    })
  },
}

而后在项目 index.html 文件内引入对应 cdn

<!-- public/index.html -->
  <script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
  <script src="https://cdn.bootcss.com/vue-router/3.1.3/vue-router.min.js"></script>
  <script src="https://cdn.bootcss.com/axios/0.19.0-beta.1/axios.min.js"></script>
  <script src="https://cdn.bootcss.com/vuex/3.1.1/vuex.min.js">
  <script src="https://cdn.bootcss.com/element-ui/2.3.3/index.js"></script>

需要将原来的引用注释,我们的过滤才能生效

// import Vue from "vue"
// import Element from "element-ui"

再次使用 webpack-bundle-analyzer,可以看到依赖的体积减少了近 10 M

 

使用后打包时间

再次打包,打包时间缩短了近一倍

 

未完待续。。。

深入:Webpack 大法之 Code Splitting


参考
vue-cli3 使用 webpack-bundle-analyzer 插件;
解决 vue 打包 wendor 过大的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值