React (CRA) Service Worker 缓存“公共”文件夹

2024-02-12

执行 create-react-app 并启用 Service Worker 后index.js,来自的所有相关文件src文件夹被缓存。然而我的一些资源位于public目录。当我跑步时npm run build, the asset-manifest.json and precache-manifest.HASH.js仅包含 HTML、损坏的 JS 和 CSS(所有内容均来自src文件夹)。

我怎样才能告诉服务工作者额外缓存特定文件public folder?

这是实际生成的precache-manifest.e431838417905ad548a58141f8dc754b.js

self.__precacheManifest = [
  {
    "revision": "cb0ea38f65ed9eddcc91",
    "url": "/grafiti/static/js/runtime~main.cb0ea38f.js"
  },
  {
    "revision": "2c226d1577937984bf58",
    "url": "/grafiti/static/js/main.2c226d15.chunk.js"
  },
  {
    "revision": "c88c70e5f4ff8bea6fac",
    "url": "/grafiti/static/js/2.c88c70e5.chunk.js"
  },
  {
    "revision": "2c226d1577937984bf58",
    "url": "/grafiti/static/css/main.7a6fc926.chunk.css"
  },
  {
    "revision": "980026e33c706b23b041891757cd51be",
    "url": "/grafiti/index.html"
  }
];

但我希望它也包含这些 url 的条目:

  • /grafiti/icon-192.png
  • /grafiti/icon-512.png

他们来自public folder.

或者:我如何添加我的图标manifest.webmanifest文件在src文件夹的方式以便我可以从网络清单中引用它们?


我假设您正在寻找一种无需弹出即可工作的解决方案(像我一样)。这种方法对我有用:

  1. 安装模块反应应用程序重新连线 https://github.com/timarney/react-app-rewired via yarn add -D react-app-rewired
  2. Replace react-scripts在 package.json 内的 npm 脚本中(弹出不需要)

    /* package.json */
    
    "scripts": {
    -   "start": "react-scripts start",
    +   "start": "react-app-rewired start",
    -   "build": "react-scripts build",
    +   "build": "react-app-rewired build",
    -   "test": "react-scripts test --env=jsdom",
    +   "test": "react-app-rewired test --env=jsdom",
        "eject": "react-scripts eject"
    
  3. 创建与 package.json 同一级别的 config-overrides.js 文件

我的文件看起来像这样(因为我还想添加一个自己的服务工作人员,为我的 api 添加更复杂的缓存选项)但是全局模式全局目录就是您所寻找的。添加此模式后,匹配的文件(在我的例子中为图像、音乐和声音)被添加到生成的 precache-manifest-{hash} 中。

const {InjectManifest} = require('workbox-webpack-plugin');
const path = require('path');

module.exports = {
  webpack: function(config, env) {
    config.plugins.push(
      new InjectManifest({
        globPatterns: [
          'images/*.png',
          'models/*.glb',
          'music/*.mp3',
          'sound/*.mp3'
        ],
        globDirectory: 'build',
        swSrc: path.join('src', 'custom-service-worker.js'),
        swDest: 'service-worker.js'
      })
    );

    return config;
  }
}

P.S.:如果您需要 custom-service.worker.js 文件才能使其工作,workbox.precaching.precacheAndRoute([])该文件的内容应该足够了,但是工作箱文档 https://developers.google.com/web/tools/workbox/对于那些缓存的东西也很有趣

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React (CRA) Service Worker 缓存“公共”文件夹 的相关文章

  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • SearchView过滤ListView

    我已经实现了搜索视图来过滤我的列表视图项目 当我输入任何文本时 它会过滤列表 但当我退出搜索视图时 它不会返回原始列表项 public class PlacesListAdapter extends ArrayAdapter
  • 如何以编程方式检查 AndroidManifest.xml 中是否声明了服务?

    我正在编写一个库 该库提供了一项服务 其他开发人员可以通过将其包含在他们的项目中来使用该服务 因此 我无法控制 AndroidManifest xml 我在文档中解释了要做什么 但一个常见的问题是人们忽略了将适当的 标记添加到其清单中 或者
  • 是否可以将数组或对象添加到 Android 上的 SharedPreferences

    我有一个ArrayList具有名称和图标指针的对象 我想将其保存在SharedPreferences 我能怎么做 注意 我不想使用数据库 无论 API 级别如何 请检查SharedPreferences 中的字符串数组和对象数组 http
  • 当文本输入聚焦在 React Native for Android 的底部工作表上时,视图移出屏幕

    我正在使用图书馆 https github com osdnk react native reanimated bottom sheet https github com osdnk react native reanimated bott
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • Android SIP 来电使用带有广播接收器的服务

    大家好 其实我正在尝试创建一个应用程序 支持基于 SIP 通过互联网进行音频呼叫 这里使用本机 sip 我遇到了来电问题 我已经完成了服务的注册部分 但是在接听电话时我无法接听电话 请帮助我 Service file package exa
  • 是否必须删除 Intent extra?

    这可能是一个愚蠢的问题 但是是否有一条规则规定消费活动必须显式删除 Intent 额外内容 或者只有在回收 Intent 对象时才如此 换句话说 如果我总是通过执行以下操作来链接到下一个活动 Intent i new Intent MyCu
  • 如何使用 Cordova 获取当前安装的应用程序的版本?

    我已经找到了应用程序可用性插件 https github com ohh2ahh AppAvailability它主要检查用户是否在其设备上安装了某个应用程序 是否有可能获得应用程序的当前版本 开发者名称 重要 以及所有可能的信息 一般来说
  • 尝试将相机切换回前面但出现异常

    尝试将相机切换回前面 但出现异常 找不到 问题请检查并帮助 error 01 27 11 49 00 376 E AndroidRuntime 30767 java lang RuntimeException Unable to start
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 在gradle插件中获取应用程序变体的包名称

    我正在构建一个 gradle 插件 为每个应用程序变体添加一个新任务 此新任务需要应用程序变体的包名称 这是我当前的代码 它停止使用最新版本的 android gradle 插件 private String getPackageName
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • .isProviderEnabled(LocationManager.NETWORK_PROVIDER) 在 Android 中始终为 true

    我不知道为什么 但我的变量isNetowrkEnabled总是返回 true 我的设备上是否启用互联网并不重要 这是我的GPSTracker class public class GPSTracker extends Service imp
  • 增加活动的屏幕亮度

    显然 Android 操作系统中至少有三种不同的技术可以改变屏幕亮度 其中两个在纸杯蛋糕之后不再起作用 而第三个被接受的技术显然有一个错误 我想在单视图活动开始时增加屏幕亮度 然后在活动结束时将亮度恢复为用户设置 没有按钮 没有第二个视图或
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 将 Intent 包装在 LabeledIntent 中以用于显示目的

    要求 我的应用程序中有一个 共享 按钮 我需要通过 Facebook 分享 我需要选择是否安装原生 Facebook 应用程序 我们的决定是 如果未安装该应用程序 则将用户发送到 facebook com 进行分享 当前状态 我可以检测何时

随机推荐

  • Ruby Datamapper 表继承与关联

    我开始学习数据映射器 http datamapper org 我喜欢它的是我可以用真正的继承来编写我的模型 现在我想知道是否可以对此进行更高级 class Event include DataMapper Resource property
  • geom_area 绘图区域中的间隙

    我想根据因子变量 状态 来区分绘图颜色的区域 我使用 fill Status 但是 我看到绘图区域出现中断 关于如何避免这种情况以及为什么会发生这种情况有什么想法 建议吗 df1 lt data frame Date seq as Date
  • 如何使用 Spark Naive Bayes 分类器通过 IDF 进行文本分类?

    我想使用 tf idf 将文本文档转换为特征向量 然后训练朴素贝叶斯算法对它们进行分类 我可以轻松加载没有标签的文本文件 并使用 HashingTF 将其转换为向量 然后使用 IDF 根据单词的重要性对单词进行加权 但如果我这样做 我就会去
  • 如何将参数样条线一分为二?

    我有一个分段参数埃尔米特三次样条 对于样条线的每一段 公式为 Q 2u 3 3u 2 1 p i 2u 3 3u 2 p i 1 u 3 2u 2 u tan i u 3 u 2 tan i 1 其中 u 是 0 1 域中每个部分的参数 每
  • PHP 正则表达式查找非空格字母

    我想替换 F 但不是 F 我尝试过以下代码 但没有任何运气 preg replace F f str 尝试这个 preg replace
  • Thread对象和Worker对象有什么区别(php pthreads)

    到目前为止我找到的唯一解释是 http pthreads org http pthreads org 但这对于代码来说意味着什么呢 我什么时候应该使用 Worker s 什么地方应该使用 Threads Thanks 它们都是线程 但是 线
  • 将 Unicode 输出到控制台的最佳方法是什么?

    我正在 Visual Studio 2019 中使用 C 17 我已经阅读了一些有关编码的内容 但我仍然对它们不太满意 我想将 UNICODE 字符输出到屏幕 为此 我使用以下代码 include
  • VB.NET 中的 Windows 窗体控件何时何地调用 InitializeComponent?

    我正在 VB NET 中做一个 Windows 窗体项目 但 VB NET 对我来说是全新的 我主要是一名 C 开发人员 在 C Windows 窗体中 从窗体 控件的构造函数调用用户控件的 InitializeComponent 当我在
  • 为您的网站提取 LinkedIn 推荐

    如何提取或获取针对我的网站的 LinkedIn 推荐 有没有插件或者PHP脚本 您可以使用以下方法提取建议领英 API https developer linkedin com apis 具体来说配置文件API https develope
  • 尝试让机器人在使用命令时记录一些内容discord.py

    我试图让我的机器人在使用时记录一个事件 也称为 mod 命令 由于我的机器人位于多个服务器中 因此我有一个命令 人们可以在其中设置他们希望机器人记录事件的日志通道 到目前为止 我已经 commands command commands ha
  • 当键未知时从字典中删除项目

    按值从字典中删除项目的最佳方法是什么 即当项目的键未知时 这是一个简单的方法 for key item in some dict items if item is item to remove del some dict key 还有更好的
  • mongodb聚合嵌入文档值

    我正在努力解决 mongodb 中的一些聚合函数 假设我有一些这样的文件 id 1 periods id 12 tables id 121 rows id 1211 text some text id 1212 text some othe
  • css、javascript——从哪里开始? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是一名拥有 10 多年经验的 C C 程序员 我还了解 python 和 perl 但我从未使用过这
  • 正则表达式模式匹配字符串中至少 1 个数字和 1 个字符

    我有一个正则表达式 a zA Z0 9 这只允许输入字母数字 但如果我只插入数字或字符 那么它也接受它 我希望它的工作方式就像字段应该只接受字母数字值 但该值必须至少包含 1 个字符和 1 个数字 为什么不首先应用整个测试 然后添加针对字符
  • 以编程方式设置 UIButton 的背景不起作用

    我只是想简单地设置按钮的背景图像 但无论我尝试什么 它都什么也没做 我还放了一个UIImageView在那里查看图像文件是否有任何问题 但图像视图设置得很好 我必须在按钮的属性中设置一些东西吗 这里是代码 import UIKit clas
  • 如何让不同的解决方案引用同一个resx文件?

    我有一个 resx 文件 我想从多个解决方案 项目中使用它 并且我不想在每个解决方案中都有本地副本 仅在编译时带一份副本 有什么办法可以做到这一点吗 因为当我将其添加为 添加现有文件 时 它会在本地复制一份副本 知道该怎么做吗 如果您使用的
  • 为 iOS 构建 GMP

    我需要使用GMP在我正在开发的 iPhone 程序中 但真的不知道从哪里开始 我知道我必须为设备构建一个版本 为模拟器构建一个版本 但这就是我所知道的 我尝试环顾四周 但没能找到太多东西 这里有人成功构建吗GMP for iphone愿意指
  • 如何在 swing 中淡入淡出图像?

    我有一个继承自 JPanel 的类 上面有一个图像 我想设置一个小动画来显示面板 图像 然后在事件触发时将其淡出 我大概设置了一个线程并启动动画 但是我该如何真正做到淡入淡出呢 您可以自己进行线程处理 但使用Trident http ken
  • Rcpp 中的折叠向量

    我有一个 Rcpp 函数 它给我一个结果列表 其中包含一些字符串向量 std vector 1 1 0 1 0 0 0 0 2 1 0 0 0 0 0 1 3 1 0 1 0 0 0 0 4 1 0 0 0 1 0 0 我想得到这样的东西
  • React (CRA) Service Worker 缓存“公共”文件夹

    执行 create react app 并启用 Service Worker 后index js 来自的所有相关文件src文件夹被缓存 然而我的一些资源位于public目录 当我跑步时npm run build the asset mani