简体   繁体   English

在 vite.config.js 中更改 outDir 后找不到 Vite 清单

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM