vite打包拆分js和css

最近开发了一个h5的系统,用的是vite + vue3 + ts 开发的,

打包之后发现vite会将所有的js和css文件都打在一个文件夹下,assets目录,

所以 我总结了一份拆分js和css的配置,将js和css分别打在不同目录下

配置如下:

build: {
    chunkSizeWarningLimit: 1500,
    rollupOptions: {
      output: {
        // 最小化拆分包
        manualChunks(id) {
          if (id.includes("node_modules")) {
            return id.toString().split("node_modules/")[1].split("/")[0].toString()
          }
        },
        // 用于从入口点创建的块的打包输出格式[name]表示文件名,[hash]表示该文件内容hash值
        entryFileNames: 'js/[name].[hash].js',
        // 用于命名代码拆分时创建的共享块的输出命名
        //   chunkFileNames: 'js/[name].[hash].js',
        // 用于输出静态资源的命名,[ext]表示文件扩展名
        assetFileNames: '[ext]/[name].[hash].[ext]',
        // 拆分js到模块文件夹
        chunkFileNames: (chunkInfo) => {
          const facadeModuleId = chunkInfo.facadeModuleId ? chunkInfo.facadeModuleId.split('/') : [];
          const fileName = facadeModuleId[facadeModuleId.length - 2] || '[name]';
          return `js/${fileName}/[name].[hash].js`;
        },
      }
    }
  }

在vite.config.js文件里添加build属性就好了,

打完之后就是这个样子

亲测可用!!!

<think>好的,用户现在问的是Vite如何进行打包优化。首先,我需要回忆一下之前用户的问题历史。之前他询问了除了Webpack之外的前端打包工具,我介绍了Rollup、Vite、Parcel等。现在他可能已经开始使用Vite者正在考虑使用,所以想了解如何优化打包。 首先,用户可能已经对Vite有基本了解,知道它基于ESMRollup,但具体优化方法可能不太清楚。我需要整理Vite的优化策略,确保涵盖常见的优化点,比如代码分割、压缩、资源处理等。同时,用户可能对配置细节感兴趣,例如如何调整build配置,使用哪些插件。 接下来,我需要考虑用户可能的实际需求。比如,他们可能关心如何减少打包体积,加快构建速度,者优化生产环境的性能。此外,用户可能想知道如何利用Vite的特性,如动态导入、异步加载模块,者如何集成分析工具来查看打包结果。 还要注意用户的技术水平。之前的回答中提到过Vite适合Vue3项目,用户可能是Vue开发者,所以可能需要一些针对Vue的优化建议,比如自动导入组件者使用相关插件。同时,作为优化建议,可能需要分步骤说明,让用户能够逐步实施。 另外,用户可能遇到的问题包括如何配置Rollup的选项,因为Vite底层使用Rollup进行生产打包。所以需要解释如何通过vite.config.js来调整Rollup的配置,比如手动分块策略、压缩选项等。同时,提到使用esbuild进行转换压缩,以及如何开启GzipBrotli压缩。 还要考虑到资源优化,如图片压缩、雪碧图生成等,可能需要推荐一些Vite插件。另外,环境变量的正确使用区分开发生产环境也是优化的一部分,需要提及。 最后,是否需要对比不同优化方法的效果,者推荐一些分析工具,比如rollup-plugin-visualizer,帮助用户可视化分析包小,这样他们可以更有针对性地进行优化。 总结一下,回答的结构应该分点清晰,涵盖代码分割、压缩、依赖优化、资源处理、预构建、环境配置、插件使用等方面。每个点给出具体的方法配置示例,同时语言要简洁明了,适合不同层次的开发者理解。需要确保信息准确,比如Vite的默认配置可调整参数,避免错误。同时,考虑到用户可能的后续问题,比如如何选择插件处理特定类型的文件,可以适当提及引导用户进一步研究。</think>以下是 Vite 进行打包优化的常用方法策略,分步骤说明: --- ### **一、基础打包优化配置** 1. **开启生产模式构建** 使用 `vite build` 命令时,默认启用生产模式(自动压缩代码、移除调试语句等): ```bash vite build ``` 2. **调整 `build` 配置** 在 `vite.config.js` 中配置生产构建参数: ```javascript export default { build: { // 指定输出目录 outDir: 'dist', // 启用/禁用 CSS 代码拆分 cssCodeSplit: true, // 生成 sourcemap(调试用,生产环境建议关闭) sourcemap: false } } ``` --- ### **二、代码分割与压缩** 1. **动态导入(按需加载)** 使用 ES 动态导入语法拆分代码块: ```javascript // 动态导入路由组件 const Home = () => import('./views/Home.vue'); ``` 2. **手动分块策略** 通过 `rollupOptions` 配置 Rollup 的代码分割规则: ```javascript build: { rollupOptions: { output: { manualChunks: { // 将 vue 相关库单独打包 vue: ['vue', 'vue-router', 'pinia'], // 将 lodash 单独打包 lodash: ['lodash-es'] } } } } ``` 3. **压缩优化** - 默认使用 **esbuild** 压缩 JS/CSS,速度极快 - 启用更深度压缩(需安装 `vite-plugin-compression`): ```javascript import viteCompression from 'vite-plugin-compression'; export default { plugins: [ viteCompression({ algorithm: 'gzip' }) // 生成 .gz 文件 ] } ``` --- ### **三、依赖与资源优化** 1. **预构建依赖** Vite 自动预构建 `node_modules` 中的 CommonJS 依赖(如 `lodash`),转为 ESM 格式。可通过配置排除包含特定包: ```javascript optimizeDeps: { include: ['lodash-es'], // 强制预构建 exclude: ['jquery'] // 排除预构建 } ``` 2. **图片压缩** 使用插件自动压缩图片(如 `vite-plugin-imagemin`): ```javascript import imagemin from 'vite-plugin-imagemin'; export default { plugins: [ imagemin({ gifsicle: { optimizationLevel: 3 }, // GIF 压缩 mozjpeg: { quality: 75 } // JPEG 压缩质量 }) ] } ``` 3. **CDN 引入外部库** 通过 `vite-plugin-cdn-import` 将第三方库从 CDN 加载: ```javascript import importToCDN from 'vite-plugin-cdn-import'; export default { plugins: [ importToCDN({ modules: [ { name: 'vue', var: 'Vue', path: 'https://unpkg.com/vue@3' } ] }) ] } ``` --- ### **四、高级优化技巧** 1. **SSR 与 SSG** - 服务端渲染(SSR):通过 `vite ssr` 命令优化首屏加载 - 静态站点生成(SSG):结合 `vite-ssg` 插件生成静态 HTML 2. **Tree Shaking** Vite 默认启用 Rollup 的 Tree Shaking,确保代码中未使用的导出被自动移除。需注意: - 使用 ESM 格式的依赖(如 `lodash-es` 而非 `lodash`) - 避免副作用代码(标记 `sideEffects: false` 在 `package.json`) 3. **分析构建结果** 使用 `rollup-plugin-visualizer` 可视化分析包体积: ```javascript import { visualizer } from 'rollup-plugin-visualizer'; export default { plugins: [ visualizer({ open: true }) // 生成 stats.html 并自动打开 ] } ``` --- ### **五、框架专项优化** 1. **Vue 项目** - 使用 `unplugin-vue-components` 自动按需导入组件库(如 Element Plus) - 启用 `<script setup>` 语法减少运行时开销 2. **React 项目** - 使用 `@vitejs/plugin-react-swc` 替代 Babel,借助 SWC 加速编译 --- ### **总结选择建议** | 场景 | 推荐策略 | |------|----------| | 减少首屏体积 | 代码分割 + CDN 引入 | | 提升构建速度 | 预构建依赖 + esbuild 压缩 | | 深度优化图片/字体 | 资源压缩插件 | | 长期维护项目 | 定期分析构建结果 | 通过组合上述方法,可显著降低产物体积并提升加载性能。建议优先使用 Vite 默认优化,再按需引入插件解决特定问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值