You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Vite配置,实现打包产物按原src目录结构导出?

问题原因&修正方案

你的配置遗漏了资源路径分类规则、多余入口配置、默认分块规则几个核心项,以下是完整可运行的配置:

import { defineConfig } from 'vite';

export default defineConfig({
  build: {
    emptyOutDir: true,
    outDir: '../../testproject/assets/test/',
    // 关闭默认的小体积资源内联,避免SVG/字体被额外生成文件
    assetsInlineLimit: 0,
    rollupOptions: {
      output: {
        // 入口JS固定输出到js目录
        entryFileNames: 'js/[name].js',
        // 按资源类型分类指定输出路径
        assetFileNames: (assetInfo) => {
          // CSS文件输出到css目录
          if (assetInfo.name.endsWith('.css')) {
            return 'css/[name][extname]';
          }
          // 字体文件输出到fonts目录
          if (/\.(woff2?|eot|ttf|otf)$/i.test(assetInfo.name)) {
            return 'fonts/[name][extname]';
          }
          // 图片类资源(含SVG)输出到images目录
          if (/\.(png|jpe?g|gif|svg|webp)$/i.test(assetInfo.name)) {
            return 'images/[name][extname]';
          }
          // 其他资源统一输出到assets目录,可按需调整
          return 'assets/[name][extname]';
        },
        // 关闭自动公共chunk拆分,避免生成多余的映射JS文件
        manualChunks: undefined
      },
      // 仅保留JS作为唯一入口,SCSS在JS文件内引入即可
      input: './src/js/app.js'
    }
  },
  // 如果需要原封不动复制src/static下的所有文件到输出根目录,开启以下配置
  // publicDir: 'src/static'
})

对应问题修复说明

  • 多余assets映射文件:原配置将SCSS作为独立入口,同时Vite默认开启公共chunk拆分,删除SCSS入口+关闭自动分块即可解决,注意需在src/js/app.js第一行添加import '../styles/app.scss'引入样式文件。
  • 字体文件重复输出:原配置未给字体指定输出路径,默认直接输出到根目录,新增字体路径规则后可统一输出到fonts目录,同时注意不要将字体文件放在public目录,避免被public的全局复制逻辑额外复制一份。
  • 部分SVG输出到根目录:原配置未给SVG指定输出路径,且小于4kb的SVG默认会被Vite转成base64,关闭内联+新增图片路径规则后可统一输出到images目录。
  • JS/CSS未按预期路径存放:新增的entryFileNames和CSS路径规则已经固定输出路径为js/app.js和css/app.css,符合需求。

内容的提问来源于stack exchange,提问作者mat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:36:03