赞
踩
最近开发的一个vue3+vite+ts项目,build后发现体积过大,所以针对于项目体积进行一次优化。
npm i rollup-plugin-visualizer -S
在vite.config.js中引入
在 plugins里面
然后执行npm run build就自动打开可视化分析
可以看到,由于项目中使用了echarts和@wangeditor富文本编辑器占据了主要体积。
1:echarts按需引入,如果项目中用到的图表类型不多,推荐这种方式,可以有效减少项目体积。
由于我们项目中用到的是MapChart地图,在utils下面新建charts.ts
- import * as echarts from 'echarts/core';
- import {
- MapChart,
- // 系列类型的定义后缀都为 SeriesOption
- MapSeriesOption,
- // LineChart,
- // LineSeriesOption
- } from 'echarts/charts';
- import {
- TitleComponent,
- // 组件类型的定义后缀都为 ComponentOption
- TitleComponentOption,
- TooltipComponent,
- TooltipComponentOption,
- // GridComponent,
- // GridComponentOption,
- // 数据集组件
- // DatasetComponent,
- // DatasetComponentOption,
- // 内置数据转换器组件 (filter, sort)
- // TransformComponent
- } from 'echarts/components';
- import { LabelLayout, UniversalTransition } from 'echarts/features';
- import { CanvasRenderer } from 'echarts/renderers';
-
- // 通过 ComposeOption 来组合出一个只有必须组件和图表的 Option 类型
- export type ECOption = echarts.ComposeOption<
- | MapSeriesOption
- | TitleComponentOption
- | TooltipComponentOption
- // | GridComponentOption
- // | DatasetComponentOption
- >;
-
- // 注册必须的组件
- echarts.use([
- TitleComponent,
- TooltipComponent,
- // GridComponent,
- // DatasetComponent,
- // TransformComponent,
- MapChart,
- LabelLayout,
- UniversalTransition,
- CanvasRenderer
- ]);
-
- // const option: ECOption = {
- // // ...
- // };
-
- export default echarts
-
在main.js中引入
并且使用provide,inject为组件注入依赖。
在组件中使用如上
2 : CDN加速
在vite.config.js中引入
import { autoComplete, Plugin as importToCDN } from "vite-plugin-cdn-import";
经过以上操作后项目体积缩小至
npm i vite-plugin-compression -D
vite.config.js中引入
import compressPlugin from "vite-plugin-compression"; //静态资源压缩
plugins配置
- compressPlugin({ //gzip静态资源压缩
- verbose: true, // 默认即可
- disable: false, //开启压缩(不禁用),默认即可
- deleteOriginFile: false, //删除源文件
- threshold: 10240, //压缩前最小文件大小
- algorithm: 'gzip', //压缩算法
- ext: '.gz', //文件类型
- }),
同样 nginx 上也需要配置, 在nginx中的conf文件中的server{}中配置加上如下代码
- gzip on;
- gzip_static on;
- gzip_buffers 4 16k;
- gzip_comp_level 8;
- gzip_types application/javascript text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; #压缩文件类型
- gzip_vary on;
npm i vite-plugin-imagemin -D
vite.config.js中引入
import viteImagemin from 'vite-plugin-imagemin'
- viteImagemin({
- gifsicle: {
- optimizationLevel: 7,
- interlaced: false
- },
- optipng: {
- optimizationLevel: 7
- },
- mozjpeg: {
- quality: 20
- },
- pngquant: {
- quality: [0.8, 0.9],
- speed: 4
- },
- svgo: {
- plugins: [
- {
- name: 'removeViewBox'
- },
- {
- name: 'removeEmptyAttrs',
- active: false
- }
- ]
- }
- }),
不同格式的文件配置也不一样,具体可以参考 github :vite-plugin-imagemin 。
经过以上手段优化后项目体积降低至707KB
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。