因此,create-react-app 在默认情况下包括service worker功能,这很可爱- 我所有的静态资产都被缓存起来以供离线使用。很酷,但是现在我想进一步介绍一下,并使用indexedDB缓存一些动态内容。
问题是,没有要修改的service-worker.js文件。它在构建过程中生成。
有没有一种方法可以添加其他逻辑而无需弹出create-react-app或重做所有不错的静态缓存内容?
如您所见,create-react-app的配置被锁定,并且服务工作者逻辑完全在配置中定义。
create-react-app
如果你不想eject,但你需要一些定制,另一种选择是修改create-react-app生成过程中显式调用sw-precacheCLI 后 的正常建设已经完成,覆盖service-worker.js是create-react-app默认生成。因为这涉及修改您的local package.json,所以不需要eject先执行。
eject
sw-precache
service-worker.js
package.json
有这种方法的一些信息在这里,和一般的想法是修改你的npm脚本看起来是这样的:
npm
"build": "react-scripts build && sw-precache --config=sw-precache-config.js"
随着sw-precache-config.js 配置根据您的需求,但包括
sw-precache-config.js
swFilePath: './build/service-worker.js'
确保内置文件service-worker.js被覆盖。