在2019年左右离开训练之后,我又回到了Laravel的开发阶段.我更习惯于混合而不是Vite,但我喜欢Blade中的@Vite助手.对于这个应用程序,我必须在根公共目录中提供一个Firebase服务工作者,可在https://example.com/firebase-messaging-sw.js访问.我的vite.config.js如下所示:

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
export default defineConfig({
    plugins: [
        laravel({
            valetTls: 'whatever.test',
            input: [
                'resources/css/app.css',
                'resources/js/app.js',
                'resources/js/firebase-messaging-sw.js'
            ],
            refresh: true,
        })
    ]
});

问题是,Firebase-Messaging-sw.js使用IMPORT语句从 node 模块中获取Firebase函数,这些函数在编译后的面向公众的文件中也以简化的胡言乱语结束.因为服务工作者不是作为模块引用的,所以"导入"语句会失败.我所希望的就是将该文件编译成一个单独的JavaScript文件,而不在最终产品中导入.使用Mix很容易做到这一点:

const mix = require('laravel-mix');
mix.js('./build/firebase-messaging-sw.js', './public/firebase-messaging-sw.js');

但在这一点上,我已经陷入了太深的困境,无法切换到Mix.我可以对我的配置做些什么,以使VITE输出一个干净的文件,最好没有散列的文件名?我看到了this个,但它假设对Rollup的了解比我深得多,而且老实说,我不确定在这种情况下Laravel/Vite/Rollup之间的界限在哪里.这似乎是一个非常简单的问题,但我找不到最近的答案.

this answer个,我try 将我的vite.config.js更改为:

export default defineConfig({

    build: {
        rollupOptions: {
          output: {
            manualChunks: {}
          },
        }
    },

    plugins: [
        laravel({
            valetTls: 'whatever.test',
            input: [
                'resources/css/app.css',
                'resources/js/app.js',
                'resources/js/firebase-messaging-sw.js'
            ],
            refresh: true,
        })
    ],

});

但这对VITE的yields 没有影响.

推荐答案

从不支持块的格式中 Select 一种-LIFE或UMD:

rollupOptions: {
  output: {
    format: 'iife'
  }
}

您还可以关闭按动态导入拆分:

rollupOptions: {
  output: {
    inlineDynamicImports: true
  }
}

如果您在JS中导入了css,那么使用import style from './style.css?inline'来获取您的css并手动将其注入到document.head中.

Laravel相关问答推荐

未将Laravel Blade属性传递给组件或类

Laravel 4:如何将 WHERE 条件应用于 Eloquent 类的所有查询?

如何在 laravel 5.2 中显示 500 内部服务器错误页面?

Laravel 5.4 中的自定义助手类

Eloquent: hasNot 带参数

你如何找到 Laravel 外观背后的底层类?

Laravel 4 定义 RESTful 控制器

Laravel 4:读取由 javascript 设置的 cookie

Laravel 中未加密的 cookie

条带 api 判断现有卡

Laravel 判断约束违规

在 Laravel 4 迁移中创建 MYSQL 过程

升级到 Laravel 5.2 会使所有会话失效

如何从 laravel 中的现有数据库创建迁移

如何将对象(模型类型对象)插入到 Laravel 中特定索引号的集合对象中?

调整行数以形成:: Textarea Laravel 5

Laravel / Eloquent内存泄漏重复检索相同的记录

使用哪个 Auth::check() 或 Auth::user() - Laravel 5.1?

将图像保存在公共文件夹中,而不是存储 laravel 5

找不到 HOME 环境 -- 扩展 `~'