vite构建后public目录文件未出现在dist中,是因为public文件仅被原样复制到dist根目录,而非保留public子路径;需确认public/css/app.css真实存在、路径拼写准确、未被.gitignore忽略,且构建在项目根目录执行。

你执行vite build后发现dist目录里没有public/css/app.css这个文件,甚至整个public/css目录都消失了——这不是构建失败,而是Vite对public目录的处理逻辑根本不同于src下的资源。
理解public目录在Vite中的特殊地位
public目录里的文件不会被Vite编译、哈希、重命名或路径重写,它们会被原封不动地复制到dist根目录下。
所以【public/css/app.css必须存在于项目根目录的public/css/路径下,且文件名拼写完全一致】,Vite才可能把它复制过去。
如果public/css/app.css在源码中根本不存在,dist里自然不会有它——Vite不会凭空生成,也不会报错提醒你漏放了文件。
检查public目录是否被正确识别
第一步:确认vite.config.ts中未配置build.emptyOutDir: true以外的干扰项,尤其不要设置publicDir: false或自定义publicDir为其他路径。
第二步:运行ls -la public/css/app.css(Mac/Linux)或dir public\css\app.css(Windows),验证该文件真实存在且可读。
第三步:打开vite.config.ts,检查是否有类似publicDir: 'src/public'的错误配置——这会让Vite去src下找public,而忽略项目根目录的public。
构建时public文件未出现在dist中的原因排查
方法一:路径大小写敏感导致丢失
Linux/macOS系统严格区分大小写。如果你本地开发时文件名为Public/css/app.css或PUBLIC/CSS/APP.CSS,Vite在构建时会跳过它——因为public目录名必须小写且全英文,且路径层级必须是public → css → app.css。
方法二:.gitignore或编辑器临时文件干扰
某些编辑器(如VS Code)会在public/css/下生成.vscode或.DS_Store等隐藏文件,若.gitignore里写了**/css/**但没排除app.css,Git可能已把app.css删掉却未提示;请直接在终端用ls -a public/css/确认app.css是否真在。
方法三:构建命令执行路径错误
确保你在项目根目录(即包含vite.config.ts和public文件夹的那层)运行pnpm build或npm run build。若在src或dist子目录下执行,Vite会找不到public目录,也不报错,直接静默跳过复制。
验证public资源是否成功复制到dist
执行vite build后,立即检查dist/css/app.css是否存在。
注意:【dist里不会出现public/css/app.css,只会是dist/css/app.css】——public目录本身被剥离,其内部结构直接映射到dist根下。
如果dist/css/app.css存在,说明复制成功;如果不存在,回到上一步排查文件真实路径与存在性。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











