如何修改Vite Manifest文件的输出目录
解决方案
问题根源在于Laravel Vite插件的默认输出逻辑和你当前的build配置冲突了——Laravel Vite插件默认会把产物放到项目根目录的public文件夹下,再加上你错误设置了publicDir,导致路径叠加出问题,才会找public_html/public/build/manifest.json。
按下面的方式修改配置即可:
给Laravel Vite插件指定输出子目录
在laravel()插件的参数里添加output选项,明确让它把产物输出到build子目录。修正build选项的错误配置
- 把
outDir直接设为你想要的最终目录public_html/build - 删掉
publicDir: 'build',这个选项是用来指定Vite处理静态资源的公共目录,不是输出目录,留着只会搞乱路径
- 把
修改后的完整配置代码:
//vite.config.js import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; import vue from '@vitejs/plugin-vue'; import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'; import { resolve } from 'path'; import { fileURLToPath } from 'url'; export default defineConfig({ resolve: { alias: { 'vue': 'vue/dist/vue.esm-bundler.js' }, }, plugins: [ laravel({ input: ['resources/css/app.css', 'resources/js/app.js'], refresh: true, output: 'build' // 指定Laravel Vite插件的输出子目录 }), vue({ template: { transformAssetUrls: { base: null, includeAbsolute: false, }, }, }), VueI18nPlugin({ include: resolve(dirname(fileURLToPath(import.meta.url)), 'resources/js/locales/**'), }), ], build: { outDir: 'public_html/build', // 最终输出目录 manifest: true, } });
额外注意事项:
- 确认你的项目根目录下存在
public_html目录,如果项目结构不同,调整outDir的路径即可 - 执行
npm run build后,去public_html/build目录下检查,应该能看到生成的manifest.json和静态资源文件 - 如果你的Laravel项目把
public目录指向了public_html,这样配置后,Vite::manifest()就能正确找到对应的manifest文件了
内容的提问来源于stack exchange,提问作者Bqdor
相关产品推荐
相关产品推荐

