![](/img/trans.png)
[英]What is the use of firebase-messaging-sw.js in firebase web notifications?
[英]Bundle firebase-messaging-sw.js deps with Webpack
假设我有一个文件,我在其中初始化 Firebase 并导入其依赖项。
应用程序.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'
}
])
]
}
如果您有多个不同环境的 service worker 文件。 它可以是这样的
let config = {
plugins: [
...,
new CopyPlugin([
{
from: isProduction ? 'firebase-messaging-sw-prod.js' : 'firebase-messaging-sw.js',
to: 'firebase-messaging-sw.js'
}
])
]
}
不是 100% 清楚您要做什么,您是否试图将远程加载的脚本视为 webpack 依赖项? Webpack 的标准模块构建假设您导入的模块都是构建时可用的本地文件。 要将远程脚本视为依赖项,我建议将其定义为 webpack 中的external
依赖项: https ://webpack.js.org/configuration/externals/
在这个externals
配置示例中(取自链接的文档):
externals: {
jquery: 'jQuery'
}
...您将使用import jquery from "jquery"
引用 jquery 库(使用您在externals
配置中指定的键)。 在运行时,webpack 将查找名为jQuery
的全局变量( externals
配置中该键的值)。 在这种情况下,Webpack 不负责实际加载依赖项,它假定您指定的全局变量已经在运行时定义——这就是为什么它们被称为“外部”依赖项——所以你必须加载依赖项( firebase 库)在你的 webpack 包之前分开。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.