因此 create-react-app 包含服务 worker 功能 by default ,这很可爱 - 我的所有静态资源都被缓存以供离线使用,开箱即用。很酷,但现在我想更进一步,使用 indexedDB 来缓存一些动态内容。
问题是,没有 service-worker.js 文件需要修改。它是在构建过程中生成的。
有没有办法添加额外的逻辑而不弹出 create-react-app 或重做所有好的静态缓存内容?
最佳答案
正如您所观察到的,create-react-app
的配置已被锁定,并且服务工作线程逻辑完全在配置中定义。
如果您不想eject
,但想要进行一些自定义,另一种选择是修改create-react-app
构建过程以显式调用 sw-precache
CLI 在正常构建完成后,覆盖 create-react-app
生成的 service-worker.js
默认情况下。由于这涉及修改本地 package.json
,因此不需要先eject
。
有一些关于这种方法的信息 here ,总体思路是修改您的 npm
脚本,使其看起来像:
"build": "react-scripts build && sw-precache --config=sw-precache-config.js"
使用sw-precache-config.js
configured根据您的需求,但包括
swFilePath: './build/service-worker.js'
确保内置的 service-worker.js
被覆盖。
关于reactjs - 使用 create-react-app 添加更多 service-worker 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47636757/