javascript - 将 firebase-messaging-sw.js deps 与 Webpack 捆绑在一起

标签 javascript firebase webpack service-worker

假设我有一个文件,我在其中初始化 Firebase 并导入其依赖项。

app.js

import firebase from 'firebase'

firebase.initializeApp()

现在我也想为 firebase-messaging-sw.js 引用相同的依赖项,但由于它需要在根目录中,我该如何告诉 Webpack 解决依赖项?

果然我可以去

importScripts('https://www.gstatic.com/firebasejs/4.1.3/firebase.js')

但这会为我下载两次代码。

最佳答案

这个插件解决了我的问题。 firebase-messaging-sw.js 将在构建生产后复制到根文件夹

let config = {
  plugins: [
   ...,
    new CopyPlugin([
      {
        from: 'firebase-messaging-sw.js',
        to: 'firebase-messaging-sw.js'
      }
    ])
  ]
}

如果您有超过 1 个具有不同环境的服务 worker 文件。可以这样

let config = {
  plugins: [
   ...,
    new CopyPlugin([
      {
        from: isProduction ? 'firebase-messaging-sw-prod.js' : 'firebase-messaging-sw.js',
        to: 'firebase-messaging-sw.js'
      }
    ])
  ]
}

关于javascript - 将 firebase-messaging-sw.js deps 与 Webpack 捆绑在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45188864/

相关文章:

javascript - Babel Webpack 错误 : You may need an appropriate loader to handle this file type

javascript - 带有服务器渲染的 HMR 会导致校验和无效

javascript - 为什么我在使用 RequireJS 时同时收到 "$jQval is undefined"和 "$.validator.unobtrusive is undefined"?

javascript - Firebase自定义身份验证: Security of Firebase Secret in JavaScript

node.js - 使用 html 表单数据进行发布时的 Firebase 函数路由问题

android - Firebase 仅在某些设备上进行身份验证?

Webpack-dev-server 不会将 bundle 放在 dist 中

javascript - angularjs 检查电子邮件是否已存在

javascript - Google Apps 脚本 - 范围内的 ForEach

ios - Firebase 存储删除 uidd 图像