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 缓存“公共”文件夹 的相关文章

  • Angular service-worker范围在安装过程中遇到错误

    我正在尝试使用 Angular Service Worker 但在尝试使用它时出现错误 这些是我的版本 Angular CLI 15 2 0 Node 16 18 1 Package Manager npm 8 19 2 OS linux
  • 如何更改Appcompat主题中的TimePicker线条颜色?

    如何更改 Appcompat 主题中所选数字之间的 TimePicker 线条颜色 线条是蓝色的 但我需要橙色线条 我将 TimePickerDialog 与 ContextThemeWrapper 一起使用 TimePickerDialo
  • 当模态打开时,如何将焦点设置在模态内的第一个 TouchableHighlight 组件(或另一个组件,例如由 ref 给出)上?

    当模式打开时 如何将焦点设置到模式内的第一个 或任何给定的 TouchableHighlight 组件 我正在使用方向键 键盘 电视遥控器 让我们使用react native文档模式示例的片段
  • 有没有办法隐藏 TextView 中的文本?

    有没有办法隐藏 TextView 中的部分 但不是全部 文本 我尝试使用 AbsoluteSizeSpan 将大小设置为 0 但这没有任何我看到的视觉效果 你可以将大小设置为 1 但实际上你会得到凹凸不平的线条 而不是可读的文本 很可爱 但
  • 如何在android中使用retrofit访问404错误?

    我正在使用改造 2 访问 REST API 以使用原始正文插入 JSON 数据 我从服务器获得成功响应 但在响应时收到 404 错误 我想访问404错误请帮我解决这个问题 ApiUtil getServiceClass sendFinalC
  • 如何在android中以编程方式自动执行触摸

    我有一个RelativeLayout我想在不触摸屏幕的情况下执行触摸事件想要给出Toast如果它确实被触摸或没有被触摸 请抛出消息 我已经尝试过下面的方法 但它似乎不起作用 MotionEvent event MotionEvent obt
  • 有没有办法获取 Android 扩展文件中特定文件的 Url?

    我正在构建一个 PhoneGap 应用程序 其中包含大型音频和视频文件 在 Android 中 媒体文件应位于扩展文件中 以使应用程序大小保持在 Google Play 50 MB 限制以下 我目前正在考虑两种播放视频文件的方法 将所需的视
  • WebView 与 Chrome 自定义选项卡

    我正在构建一个应用程序 在详细活动中我必须显示一个网页 我本来打算使用 WebView 但后来我看到了 Chrome Custom Tab 你们认为最好实施什么 为什么 如果您只想显示某个页面 那么我建议您使用 chrome 自定义选项卡
  • 我想使用对话框显示两个数字选择器

    我试图仅使用 java 在对话框上显示两个数字选择器 代码正在工作 但我无法将其排列为相等的宽度 这是我的代码 RelativeLayout relative new RelativeLayout mContext final Number
  • Android 中表与游标的并集

    我正在尝试将两个具有相同字段的表合并起来 通过内容提供程序 创建一个用于创建 ListView 的游标 Override public Cursor query Uri uri String projection String select
  • 当 Android 上的脸部靠近屏幕时,以编程方式关闭屏幕

    我的应用程序是一个拨号器 当用户将手机靠近头部时 我需要关闭屏幕并防止单击控件 就像本机 Android 拨号器行为一样 我需要什么 API 级别以及如何以正确的方式做到这一点 我通过反汇编一个非常著名的 VoIP 应用程序找到了解决方案
  • Android 生命周期哪个事件在生命周期中只触发一次?

    我读过一些博客并访问了一些网站 我想知道哪个事件在生命周期中只触发了一次 阅读博客后我意识到onCreate 方法在生命周期内仅触发一次 我不知道我是对还是错 现在我的问题是 我想触发任何仅在我更改横向或纵向方向时触发一次的事件 而不是在启
  • Gradle创建多项目Jar

    因此 从 Gradle 和 Android Studio 诞生之初起 我就一直在使用它们 然而 我发现自己用头撞墙的次数有时远远超过了它的价值 我花了一天半的时间试图解决我目前的困境 在我工作的地方 我们使用很多共享库项目 这意味着与 Gr
  • 对话框片段中的 onActivityResult

    我正在从对话框片段中拍照 我还需要类似的东西startActivityForResult takePictureIntent actionCode Override public void onActivityResult int requ
  • 如何为移动应用程序创建无密码登录

    我有兴趣在移动应用程序和 API 之间构建某种无密码登录 假设我可以控制两者 动机是必须登录对用户来说非常烦人并且存在安全风险 例如 用户将重复使用现有密码 我希望用户能够立即开始使用该应用程序 我想知道是否有一些可行的技术 例如 在移动设
  • 是否可以在本机代码中读取/编辑共享首选项?

    我有一个 Android 应用程序 其中包含一个使用 NDK 执行一些代码的 C 库 在 C 库中 我想更新应用程序共享首选项 我的问题 是否可以在本机代码中读取 编辑共享首选项 您可以在本机代码中做任何您想做的事情 这只是很麻烦 您需要
  • Android onclicklistener 在第一次点击时不起作用

    我有一个带有默认文本的 EditText 现在 当用户单击该 EditText 时 默认文本应该更改为某些内容 我所拥有的是 我单击 EditText 光标出现在默认文本之后 没有任何反应 当我再次单击时 onClickListener 就
  • 如何使用 javascript 迭代文件系统目录和文件?

    我正在使用 Javascript 编写一个应用程序 该应用程序将与 Phonegap 一起使用来制作 Android 应用程序 我正在使用 Phonegap File API 来读取目录和文件 相关代码如下所示 document addEv
  • 新的 Android 项目未创建布局或 Java 文件

    这两天我一直在尝试简单地阅读 Big Nerd Ranch Android 编程书 第一章的前几页 我的问题的要点是 当我创建新的 Android 应用程序时 不会创建布局或 java 文件 我已经从 Android 开发站点安装了 ADT
  • Android PhoneGap 中的自定义字体

    我尝试为我的应用程序制作自定义字体 为此 我在 html 文件中编写了以下代码 在我的 HTML 正文中

随机推荐

  • 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