Vite 打包目录结构自定义配置小结

 更新时间:2025年08月29日 10:36:19   作者:没烦恼301  
在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义打包目录结构,感兴趣的可以了解一下

在 Vite 工程开发中,默认打包后的 dist 目录资源常集中在 asset 目录下,不利于资源管理。本文基于 Rollup 配置原理,详细介绍如何通过 Vite 配置自定义打包目录结构,实现 JS、CSS、图片等资源的分类存放。

一、实现原理

Vite 底层依赖 Rollup 进行打包,因此需通过 Vite 的 build.rollupOptions 配置项传递 Rollup 相关参数,核心通过 Rollup 的 output 配置控制资源输出路径:

  • entryFileNames:控制入口 JS 文件的输出路径
  • chunkFileNames:控制分包/懒加载生成的 JS chunk 文件路径
  • assetFileNames:控制非 JS 资源(CSS、图片、SVG 等)的输出路径

二、具体配置步骤

1. 基础配置文件

在项目根目录的 vite.config.js(或 vite.config.ts)中,通过 build.rollupOptions.output 配置资源输出规则:

// vite.config.js
import { defineConfig } from 'vite';

export default defineConfig({
  build: {
    rollupOptions: {
      output: {
        // 1. 入口 JS 文件输出配置
        entryFileNames: 'js/[name].[hash].js', 
        // 2. 分包/懒加载 JS 文件输出配置
        chunkFileNames: 'js/[name].[hash].js', 
        // 3. 非 JS 资源输出配置(通过函数细分类型)
        assetFileNames: (assetInfo) => {
          // 定义图片后缀列表
          const imgExts = ['png', 'jpg', 'jpeg', 'gif', 'svg', 'webp'];
          // 获取资源文件名
          const fileName = assetInfo.name || '';
          
          // 若为 CSS 文件,输出到 css 目录
          if (fileName.endsWith('.css')) {
            return 'css/[name].[hash].[ext]';
          }
          // 若为图片文件,输出到 images 目录
          if (imgExts.some(ext => fileName.endsWith(`.${ext}`))) {
            return 'images/[name].[hash].[ext]';
          }
          // 其他资源默认输出到 asset 目录
          return 'asset/[name].[hash].[ext]';
        }
      }
    }
  }
});

2. 配置说明

(1)JS 资源分离

  • entryFileNames:将项目入口 JS 文件(如 main.js)输出到 dist/js 目录,命名格式为 文件名.哈希值.js(哈希值用于缓存控制)。
  • chunkFileNames:将路由懒加载、代码分割生成的 JS chunk 文件统一输出到 dist/js 目录,与入口 JS 集中管理。

(2)非 JS 资源细分

通过 assetFileNames 函数对资源类型进行判断:

  • CSS 文件:匹配 .css 后缀,输出到 dist/css 目录。
  • 图片资源:匹配 png、jpg、svg等图片后缀,输出到 dist/images目录。
  • 其他资源:未匹配的资源(如字体、视频等)默认输出到 dist/asset 目录。

(3)占位符说明

配置中使用的 Rollup 占位符含义:

  • [name]:资源原始文件名(不含后缀)
  • [hash]:基于文件内容生成的哈希值(用于避免缓存问题)
  • [ext]:资源原始后缀名(含 .,如 .css、.png)

三、打包效果验证

执行 npm run build 打包后,dist 目录结构如下:

dist/
├─ js/                 # 所有 JS 资源
│  ├─ main.xxxx.js     # 入口 JS
│  └─ chunk.xxxx.js    # 分包 JS
├─ css/                # 所有 CSS 资源
│  └─ style.xxxx.css
├─ images/             # 所有图片资源
│  ├─ logo.xxxx.png
│  └─ icon.xxxx.svg
└─ asset/              # 其他资源
   └─ font.xxxx.ttf

四、注意事项

  1. 配置兼容性:确保 Vite 版本 ≥ 2.0,Rollup 配置语法随版本可能略有差异,建议参考对应版本官方文档。
  2. 资源类型扩展:如需添加更多资源类型(如字体 woff2),可在 imgExts 或判断逻辑中扩展。
  3. 哈希值必要性:保留 [hash] 占位符可有效解决浏览器缓存问题,避免线上资源更新后用户无法获取最新内容。

通过上述配置,可实现 Vite 打包目录的精细化管理,提升项目资源组织的清晰度和可维护性。

到此这篇关于Vite 打包目录结构自定义配置小结的文章就介绍到这了,更多相关Vite 打包目录结构配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Vue中使用xlsx组件实现Excel导出功能的步骤详解

    在Vue中使用xlsx组件实现Excel导出功能的步骤详解

    在现代Web应用程序中,数据导出到Excel格式是一项常见的需求,Vue.js是一种流行的JavaScript框架,允许我们构建动态的前端应用程序,本文将介绍如何使用Vue.js和xlsx组件轻松实现Excel数据导出功能,需要的朋友可以参考下
    2023-10-10
  • vue实现轮播图的多种方式

    vue实现轮播图的多种方式

    这篇文章给大家介绍了vue实现轮播图的多种方式,文中给出了四种实现方式,并通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,感兴趣的朋友可以参考下
    2024-02-02
  • Vue自动生成组件示例总结

    Vue自动生成组件示例总结

    在Vue中,我们可以使用unplugin-generate-component-name插件自动基于目录名称生成组件名称,这个插件使得在大型代码库中找到和管理组件更加容易和直观,这篇文章主要介绍了Vue自动生成组件示例总结,需要的朋友可以参考下
    2023-12-12
  • vue实现一个单独的组件注释

    vue实现一个单独的组件注释

    这篇文章主要介绍了vue实现一个单独的组件注释,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue+element多选级联选择器自定义props使用详解

    vue+element多选级联选择器自定义props使用详解

    这篇文章主要给大家介绍了关于vue+element多选级联选择器自定义props使用的相关资料,级联选择器展示的结果都是以数组的形式展示,也就是v-model绑定的结果,需要的朋友可以参考下
    2023-07-07
  • 详解vue2.0组件通信各种情况总结与实例分析

    详解vue2.0组件通信各种情况总结与实例分析

    本篇文章主要介绍了详解vue2.0组件通信各种情况总结与实例分析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • vue2的todolist入门小项目的详细解析

    vue2的todolist入门小项目的详细解析

    本篇文章主要介绍了vue2的todolist入门小项目的详细解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • vue项目中使用websocket的实现

    vue项目中使用websocket的实现

    本文主要介绍了vue项目中使用websocket的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Vue中request.js封装及调用示例详解

    Vue中request.js封装及调用示例详解

    这篇文章主要为大家介绍了Vue中request.js封装及调用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Vue elementui如何实现表格selection的默认勾选

    Vue elementui如何实现表格selection的默认勾选

    这篇文章主要介绍了Vue elementui如何实现表格selection的默认勾选问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06

最新评论