直接修改vite.config.js中的build.outdir为相对路径字符串(如'release-prod'),启用emptyoutdir:true,并确保cli命令不带--outdir参数以避免覆盖,同时同步配置base以匹配部署子路径,验证输出目录存在及资源路径正确。

直接改 build.outDir 就行,但得改对位置、避开覆盖和权限陷阱,否则自动化部署脚本会找不到目录或写入失败。
在 vite.config.js 中正确设置 outDir
这是最基础也最关键的一步。Vite 默认输出到 dist,要改成比如 release-prod 或 build-output(符合运维命名规范),必须在配置中显式声明:
- 使用
defineConfig包裹,确保类型安全和 IDE 支持 -
outDir值为相对路径字符串(不加前导/),如'release-prod',不是'./release-prod'或'/release-prod' - 建议同时启用
emptyOutDir: true,避免旧文件残留干扰部署校验
示例配置:
export default defineConfig({build: {
outDir: 'release-prod',
emptyOutDir: true
}
})
警惕 CLI 参数的高优先级覆盖
自动化脚本里如果用了 vite build --outDir xxx,它会无视配置文件里的 outDir。运维部署流程中常因复用旧命令导致实际输出目录与预期不符。
- 检查 CI/CD 脚本(如 GitHub Actions 的
.yml、Jenkins 的构建步骤)是否硬编码了--outDir - 统一约定:所有构建命令只执行
vite build,把目录控制权完全交给配置文件 - 若必须动态指定(如多环境),改用环境变量 + 配置内读取,更可控
适配自动化部署对路径和权限的要求
运维系统往往要求输出目录可预测、可清理、可原子替换。光改名字不够,还需配套调整:
-
路径需绝对稳定:避免使用
../或根路径,保持为项目根目录下的子目录(如release-prod),方便脚本rsync或scp定位 -
确保写入权限:在容器或部署机上,构建用户需对目标目录有写权限;若用 Docker,注意
WORKDIR和chown设置 -
配合 base 路径:如果部署在子路径(如
https://example.com/my-app/),必须同步设置base: '/my-app/',否则 HTML 中资源链接会 404
验证输出是否真正生效
别只信控制台日志。构建完成后,手动确认三件事:
- 目录是否存在:
ls -la release-prod/(不是dist/) - 关键文件是否生成:
release-prod/index.html、release-prod/assets/下有 JS/CSS - HTML 中资源路径是否匹配 base:打开
index.html,检查<script src="/assets/..."></script>的前缀是否符合部署要求
不复杂但容易忽略











