vite build后css/js未生效,因laravel默认沿用mix()逻辑,而vite产物路径、哈希管理及html注入方式不同;需改用@vite指令并确保模板位置、入口配置与vite.config.js严格匹配。
为什么 vite build 后 CSS/JS 没生效?
因为 Laravel 默认仍走传统的 mix() 资源函数逻辑,而 Vite 编译产物路径、版本控制、HTML 注入方式完全不同——不改模板和配置,浏览器根本找不到新文件。
- 检查 Blade 模板里是否还留着
@viteReactRefresh或旧的mix()调用,二者不能混用 -
@vite必须放在里(CSS)和前(JS),否则资源加载顺序错乱 - Vite 开发服务器默认只监听
resources/js和resources/css,放错目录(比如写成assets/)会导致热更新失效
@vite 在 Blade 中怎么写才不出错?
它不是简单替换 mix() 的标签,而是会自动注入开发时的 HMR 脚本或构建后的带哈希的资源链接——前提是项目结构和 vite.config.js 对得上。
- 开发环境:
@vite(['resources/css/app.css', 'resources/js/app.js'])会注入<script type="module"></script>和 HMR 客户端 - 生产环境:
vite build后,同一行会生成带完整哈希的<link rel="stylesheet">和<script type="module"></script> - 不要手动拼接路径,比如
@vite('build/assets/app.123abc.css')—— 这样会绕过 Vite 的哈希管理和入口依赖分析
public 目录下静态文件(如图片、字体)怎么引用?
Vite 不处理 public/ 下的文件,但 Laravel 的 asset() 函数依然可用;关键在于区分“由 Vite 打包的资源”和“直接丢进 public 的静态文件”。