Skip to content

Vite 打包 ECharts 大小分析

打包输出文件的大小

1.没引入 Echarts

基本就是 vue 源码的包大小

dist/esm/index.js  58.06 kB │ gzip: 18.36 kB
dist/cjs/index.js  39.05 kB │ gzip: 14.83 kB
dist/umd/index.js  39.28 kB │ gzip: 14.92 kB

2.全局导入 Echarts

js
import * as echarts from "echarts";
dist/esm/index.js  1,602.42 kB │ gzip: 439.45 kB
dist/cjs/index.js  1,102.40 kB │ gzip: 367.20 kB
dist/umd/index.js  1,102.66 kB │ gzip: 367.23 kB

3.按需引入 Echarts, 包括 LineChart PieChart BarChart

js
import * as echarts from "echarts/core";
import {
  GridComponent,
  LegendComponent,
  TitleComponent,
  ToolboxComponent,
  TooltipComponent
} from "echarts/components";
import { LineChart, PieChart, BarChart } from "echarts/charts";
import { CanvasRenderer } from "echarts/renderers";

echarts.use([
  TitleComponent,
  TooltipComponent,
  LegendComponent,
  GridComponent,
  ToolboxComponent,
  LineChart,
  PieChart,
  BarChart,
  CanvasRenderer
]);
dist/esm/index.js  901.98 kB │ gzip: 250.79 kB
dist/cjs/index.js  625.69 kB │ gzip: 211.95 kB
dist/umd/index.js  625.94 kB │ gzip: 212.03 kB

4.按需引入 Echarts, 只包含 LineChart 和它的相关组件

js
echarts.use([
  TitleComponent,
  TooltipComponent,
  LegendComponent,
  GridComponent,
  ToolboxComponent,
  LineChart,
  CanvasRenderer
]);
dist/esm/index.js  844.38 kB │ gzip: 233.95 kB
dist/cjs/index.js  587.78 kB │ gzip: 198.88 kB
dist/umd/index.js  588.03 kB │ gzip: 198.94 kB

5.按需引入 Echarts, 仅加载 LineChart 所需的最小组件

js
echarts.use([GridComponent, LineChart, CanvasRenderer]);
dist/esm/index.js  709.97 kB │ gzip: 196.89 kB
dist/cjs/index.js  495.88 kB │ gzip: 168.40 kB
dist/umd/index.js  496.14 kB │ gzip: 168.48 kB

结论

其实封装一个包含 LineChart PieChart BarChart 的组件, 和分开封装 LineChart, PieChart, BarChart 的体积是差不多的。