必须确保resources/css/app.css在JS入口中被import,否则它不会出现在manifest.json里;打开resources/js/app.js检查是否有import '../css/app.css'语句,缺失则手动添加,再运行npm run build验证manifest.json中是否存在对应键值对。

你在Laravel项目中启用Vite后,CSS样式明明写在resources/css/app.css里,也通过@vite(['resources/js/app.js'])引入了JS入口,但页面上完全看不到任何样式——根本不是CSS文件路径或选择器的问题,而是Vite压根没把CSS作为资源产物纳入构建流程,因为CSS未被JS入口显式引用,laravel-vite-plugin也就不会把它写进manifest.json,@vite指令自然无法注入对应link标签。
确认CSS是否被JS入口实际引用
打开resources/js/app.js,检查顶部是否有import './bootstrap';或import '../css/app.css'这类语句。没有这行,Vite就不会处理CSS文件,哪怕它物理存在。
如果用的是Laravel官方脚手架,通常bootstrap.js里已含import '../css/app.css';但若你删过bootstrap.js、或重写了app.js且没手动加import,CSS就彻底游离在构建链之外。
这一步操作起来很简单,直接把import '../css/app.css';粘贴到app.js最顶部即可。
立即学习“前端免费学习笔记(深入)”;
验证CSS是否进入manifest.json
运行npm run build生成生产包后,打开public/build/manifest.json,搜索app.css或你CSS文件的原始路径(如"resources/css/app.css")。
如果这个键不存在,说明Vite构建时根本没扫描到它——不是路径错,是引用断了。
【必须确保resources/css/app.css在JS入口中被import,否则它不会出现在manifest.json里】
Blade中@vite参数必须包含CSS路径
方法一:显式列出CSS文件
@vite(['resources/js/app.js', 'resources/css/app.css'])
方法二:依赖JS入口自动带入(前提是app.js里真有import '../css/app.css')
@vite(['resources/js/app.js'])
注意:只写@vite(['resources/css/app.css'])会失败,Vite要求至少一个JS入口文件存在,否则插件初始化中断,整个@vite指令静默失效。
排查CSS路径解析错误
第一步:确认CSS文件物理位置
检查resources/css/app.css是否真实存在,文件名大小写必须与import语句完全一致(Linux服务器区分大小写)。
第二步:检查import路径是否越级
在resources/js/app.js中,import '../css/app.css'是正确的;写成import './css/app.css'或import '/css/app.css'都会导致Vite找不到文件,构建时报warning但不中断,CSS被跳过。
第三步:打开浏览器Network面板,筛选CSS,刷新页面,看是否出现404请求——如果是,说明@vite注入的路径指向了不存在的文件,根源仍在manifest缺失或路径错配。


















