记一次项目优化

1,473 阅读1分钟

工作时空闲时间想看看项目整体引入了哪些第三方包,项目本身基于vue-cli + vue3的技术栈。

首先先安装下webpack的插件: npm i webpack-bundle-analyzer

随后在 vue.config.js 文件里添加一下配置:

  const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
  configureWebpack: config => {
    config.plugins.push(new BundleAnalyzerPlugin())
  },

然后执行命令: npm run build:dev --report

根据项目在本地的运行情况,发现chunk-vendors 文件占了包8.9M的内存:

image.png

发现 chunk-vendors 文件除了 erudavconsole 两个不影响生产环境的库, element-plus 相关占用了大量空间,但实际项目里只用了 el-tree 控件。

91eea0c5f0376126f49a6d44d0e7866.png

随后排查代码发现项目内挂载无限滚动组件:

import InfiniteScroll from "element-plus"
const app = createApp(App)
app.use(InfiniteScroll)

但整个项目内却并未使用该组件,遂去除(因为是整个引入element包,而不是按需引入,正确应该是如下)

import { ElInfiniteScroll } from 'element-plus'  
const app = createApp(App)
app.use(ElInfiniteScroll)

造成了引入整个element-plus库,打包体积白白增大

去除后体积缩小一半多,页面加载速度也变快:

1729753087655.png

f94251bc94152c482232c0b9e327c2e.png

实际乍一看还有下面这些大文件,例如echart的整体引用和一个储存了中国地理位置相关数据的json文件,还有其他地方同时引用 element-plus 的icon库以及其他可以优化的地方,后续更新

6931768bf49ab0e59f6e33a68b2524d.png

第一次发文,仅做一次记录 `