[英]Vite manifest not found after changing outDir in vite.config.js
When I changed outDir: "public"
to laravel 9.41, throwing an error.当我将
outDir: "public"
更改为 laravel 9.41 时,抛出错误。
Vite manifest not found at: E:\oblia\obilia_site\public\build/manifest.json
在以下位置找不到 Vite 清单:E:\oblia\obilia_site\public\build/manifest.json
Why is Vite looking for manifest in the build directory when I changed it to public?为什么我改成 public 的时候 Vite 还在 build 目录里找 manifest? The app is running fine when I am running
npm run dev
, but when is stop dev and ran npm run build
, I get this error.当我运行
npm run dev
时,该应用程序运行良好,但是当停止 dev 并运行npm run build
时,我收到此错误。 I want all my assets to be in public, not in public/build.我希望我的所有资产都公开,而不是公开/构建。
vite.config.js vite.config.js
import { defineConfig } from "vite";
import { viteStaticCopy } from "vite-plugin-static-copy";
import laravel from "laravel-vite-plugin";
export default defineConfig({
base: "/",
build: {
outDir: "public",
emptyOutDir: false,
},
plugins: [
laravel({
input: [
"resources/css/bootstrap.min.css",
"resources/css/font-awesome.min.css",
"resources/css/feather.css",
"resources/css/owl.carousel.min.css",
"resources/css/magnific-popup.min.css",
"resources/css/lc_lightbox.css",
"resources/css/bootstrap-select.min.css",
"resources/css/dataTables.bootstrap5.min.css",
"resources/css/select.bootstrap5.min.css",
"resources/css/dropzone.css",
"resources/css/scrollbar.css",
"resources/css/datepicker.css",
"resources/css/flaticon.css",
"resources/css/notiflix.min.css",
"resources/css/style.scss",
"resources/css/override.scss",
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
"resources/js/jquery-3.6.0.min.js",
"resources/js/popper.min.js",
"resources/js/bootstrap.min.js",
"resources/js/magnific-popup.min.js",
"resources/js/waypoints.min.js",
"resources/js/counterup.min.js",
"resources/js/waypoints-sticky.min.js",
"resources/js/isotope.pkgd.min.js",
"resources/js/imagesloaded.pkgd.min.js",
"resources/js/owl.carousel.min.js",
"resources/js/theia-sticky-sidebar.js",
"resources/js/lc_lightbox.lite.js",
"resources/js/bootstrap-select.min.js",
"resources/js/dropzone.js",
"resources/js/jquery.scrollbar.js",
"resources/js/bootstrap-datepicker.js",
"resources/js/jquery.dataTables.min.js",
"resources/js/dataTables.bootstrap5.min.js",
"resources/js/anm.js",
"resources/js/notiflix.min.js",
"resources/js/bootstrap-slider.min.js",
"resources/js/chart.js",
"resources/js/custom.js",
"resources/js/app.js",
"resources/js/init.js",
],
refresh: true,
}),
viteStaticCopy({
targets: [
{ src: "resources/images", dest: "" },
{ src: "resources/fonts", dest: "" },
{ src: "resources/files", dest: "" },
],
}),
],
});
I am not used to Vite.我不习惯Vite。
You need to configure the outDir at the Laravel side of things as well.您还需要在 Laravel 端配置 outDir。
After digging through the source code I found Illuminate/Foundation/Vite::useBuildDirectory
https://github.com/laravel/framework/blob/6939c04d81abdbed300aba08208fcf88b37e3889/src/Illuminate/Foundation/Vite.php#L192 This is likely what you missed in configuring the new build directory.在深入研究源代码后,我发现
Illuminate/Foundation/Vite::useBuildDirectory
https://github.com/laravel/framework/blob/6939c04d81abdbed300aba08208fcf88b37e3889/src/Illuminate/Foundation/Vite.php#L192这可能是你错过的配置新的构建目录。
The manifest is expected to be found at public_path($buildDirectory.'/'.$this->manifestFilename);
清单预计将在
public_path($buildDirectory.'/'.$this->manifestFilename);
with $buildDirectory
having a default of build
, and $this->manifestFilename
a default of manifest.json
. $buildDirectory
默认为build
, $this->manifestFilename
默认为manifest.json
。 so thats how your E:\oblia\obilia_site\public\build/manifest.json
came to be, with E:\oblia\obilia_site\public
being your (default) public path.这就是你的
E:\oblia\obilia_site\public\build/manifest.json
的样子,其中E:\oblia\obilia_site\public
是你的(默认)公共路径。
If you configure the $buildDirectory
as "."如果将
$buildDirectory
配置为“.” everything should work out.一切都应该解决。 You can find an example of how these things can be done in the Laravel documentation under advanced customization in Vite.
您可以在Laravel 文档中的 Vite 高级定制下找到如何完成这些事情的示例。
The following code should do the trick instead of the @vite
directive inside of your main template下面的代码应该可以代替主模板中的
@vite
指令
{{ Vite::useBuildDirectory('.') }}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.