Vite 默认每次构建时自动清理 dist 目录,从 2.0 版本起内置该行为,确保无旧文件残留;若自定义 outDir,仍会清理对应路径,但需保证路径合法可写;可通过插件或脚本扩展清理其他目录。

Vite 默认在每次构建时会自动清理 dist 目录(即打包输出目录),无需额外配置。这是 Vite 从 2.0 版本起内置的行为,底层由 rollup-plugin-delete 或类似逻辑实现,确保不会残留旧文件。
确认 dist 目录是否被自动清理
执行构建命令后,Vite 会先清空 dist 目录再写入新产物:
- 运行
vite build或npm run build - 检查
dist目录内容 —— 它应只包含本次构建生成的文件,无历史遗留资源(如旧版index.html、已删除组件的 JS 文件等) - 若发现残留,大概率是因自定义了
build.outDir且未同步更新清理目标,或使用了非标准构建流程(如手动调用 Rollup)
自定义输出目录时需注意清理范围
如果你在 vite.config.ts 中修改了输出路径,Vite 仍会清理该路径,但需确保路径合法且可写:
export default defineConfig({
build: {
outDir: 'release' // Vite 会自动清空 ./release 目录
}
})
- 路径支持相对路径(如
'release')和绝对路径(如path.resolve(__dirname, 'output')) - 避免将
outDir设为项目根目录或node_modules等敏感位置,否则清理可能误删重要文件 - Windows 下注意反斜杠转义问题,建议统一用正斜杠或
path.join
需要额外清理其他目录?可加插件
如果除了 dist 还要清理缓存、临时文件(如 .vite、coverage),可用社区插件或脚本补充:
立即学习“Java免费学习笔记(深入)”;
- 安装
vite-plugin-clean:npm add -D vite-plugin-clean - 在配置中启用:
import { clean } from 'vite-plugin-clean' export default defineConfig({ plugins: [ clean(['.vite', 'coverage']) // 构建前清理指定路径 ] }) - 更轻量的方式:用
rimraf写 npm script(适合 CI/CD):"scripts": { "build:clean": "rimraf dist .vite && vite build" }
常见异常与排查
如果发现 dist 没被清空,按顺序检查:
- 是否误用了
vite build --watch?该模式不清理,仅增量编译 - 是否启用了
build.emptyOutDir: false?这个选项会显式禁用自动清理,慎用 - 权限问题:CI 环境或 Docker 中,
dist目录可能被挂载为只读,导致清理失败(此时构建日志通常报错EPERM或EACCES) - 是否有其他进程(如本地服务器、IDE 同步工具)正占用
dist中的文件,导致删除被系统拒绝


















