vite 分包,rollup 配置

在 vite 里管理 js 体积过大问题

01 创建 vite 项目

创建项目

yarn create vite . --template react-ts

02 vite 核心配置如下

配置

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

// https://vite.dev/config/
export default defineConfig({
  plugins: [react()],
  build: {
    rollupOptions: {
      output: {
        manualChunks: (id) => {
          if (id.includes('node_modules/@jswork')) return 'vendor-jsw';
          if (id.includes('node_modules/react')) return 'vendor-react';
          if (id.includes('node_modules/lodash')) return 'vendor-lodash';
        }
      }
    }
  }
});

03 简单的配置

这种适合简单的项目

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

// https://vite.dev/config/
export default defineConfig({
  plugins: [react()],
  build: {
    rollupOptions: {
      output: {
        manualChunks: {
          react: ['react', 'react-dom'],
          lodash: ['lodash']
        }
      }
    }
  }
});

04 分包前后对比

分包前 VS 分包后

分包前分包后
vite v6.3.3 building for production...
✓ 38 modules transformed.
dist/index.html                   0.46 kB │ gzip:  0.30 kB
dist/assets/react-CHdo91hT.svg    4.13 kB │ gzip:  2.05 kB
dist/assets/index-BygEGC0g.css    0.10 kB │ gzip:  0.11 kB
dist/assets/index-dDPBJuH7.js   269.21 kB │ gzip: 89.04 kB
✓ built in 591ms
vite v6.3.3 building for production...
✓ 38 modules transformed.
dist/index.html                          0.71 kB │ gzip:  0.36 kB
dist/assets/react-CHdo91hT.svg           4.13 kB │ gzip:  2.05 kB
dist/assets/index-BygEGC0g.css           0.10 kB │ gzip:  0.11 kB
dist/assets/index-a6FD8FHF.js            1.69 kB │ gzip:  0.85 kB
dist/assets/vendor-jsw-BoId-P-X.js       7.17 kB │ gzip:  2.63 kB
dist/assets/vendor-lodash-Ba0ZvKTu.js   72.06 kB │ gzip: 26.70 kB
dist/assets/vendor-react-DGy7ggsM.js   186.49 kB │ gzip: 58.51 kB
✓ built in 752ms

vite rollup react