Vite build配置output.dir无效还是输出到dist目录怎么办?

❤光星 阅读 25

我在vite.config.js里设置了build.rollupOptions.output.dir = 'public/build',但打包后文件还是生成在默认的dist目录,这是为什么?

尝试过直接修改build.outDir能生效,但需要单独配置rollup输出路径。以下是完整配置:


import { defineConfig } from 'vite'
export default defineConfig({
  build: {
    rollupOptions: {
      output: {
        dir: 'public/build', // 这个配置没生效
        format: 'es'
      }
    },
    outDir: 'dist' // 如果注释这行,输出路径变成dist/index.html
  }
})

控制台没有报错,但访问/public/build提示404,文件实际在dist目录里。是不是配置层级有问题?

我来解答 赞 9 收藏
二维码
手机扫码查看
1 条解答
开发者晓娜
问题出在你对 rollupOptions.output.dir 的理解上。Vite 的 build.rollupOptions 是用来覆盖 Rollup 的默认配置的,但 Vite 本身有自己的输出目录逻辑,优先级高于 Rollup 的 output 配置。所以即使你在 rollupOptions.output.dir 里设置了路径,Vite 还是会按照 outDir 的值来决定最终的输出目录。

直接修改 build.outDir 才是正确的做法。Vite 不会去读取 rollupOptions.output.dir 来改变最终的打包路径,这个配置更多是用来控制 Rollup 内部的行为,而不是 Vite 的全局行为。

如果你需要把文件输出到 public/build,就这么改:

import { defineConfig } from 'vite'

export default defineConfig({
build: {
outDir: 'public/build', // 直接设置这里就行
rollupOptions: {
output: {
format: 'es'
}
}
}
})


保存后重新运行 vite build,文件就会正确输出到 public/build 了。至于为什么访问 /public/build 提示 404,检查一下你的服务器配置,确保静态资源路径是对的,可能是服务器没正确映射 public 文件夹。
点赞 7
2026-02-02 17:22