我有一个现有的应用我尝试转换为使用React。我已使用全新的create-react-app
复制其功能(使用react-scripts
1.0.13)。
我想使用我现有的服务工作者。我注意到CRA创建了自己的服务工作者; webpack配置中的代码(使用SWPrecacheWebpackPlugin
)创建了一个非捆绑模块service-worker.js
。所有其他JS模块都捆绑在一起。
根据我的理解,我无法复制现有的服务工作者existing-service-worker.js
并尝试导入,因为所有JS模块都捆绑在一起。
我不想退出。
我已经分叉create-react-app
以便自定义react-scripts
并在webpack配置中使用不同的逻辑,这将允许我使用我现有的服务工作者而不是使用{创建的服务工作者{1}} ...但是,我不知道该怎么做。这是我第一次使用React和webpack。
有人能指出我正确的方向,并帮助我在React中使用我现有的服务工作者而不会弹出?
答案 0 :(得分:1)
这是另一种无需退出的解决方案:
答案 1 :(得分:1)
有一个专门为该用例构建的npm库。它叫做cra-append-sw。
大多数细节都在npm页面中,但是简单地说,您只需要安装该库(npm i --save cra-append-sw)。
对package.json进行一些更改:
"start": "react-scripts start && cra-append-sw --mode dev ./public/custom-sw-import.js",
"build": "react-scripts build && cra-append-sw --skip-compile ./public/custom-sw-import.js"
最后在您的公用文件夹中创建一个名为custom-sw-import.js的文件,您在其中编写的所有服务人员代码都将简单地附加到cra的服务人员中。
由于我使用相同的原理制作了我的网站www.futurist-invenzium.com,该网站提供了PWA提供的所有功能的演示,因此我可以验证这项工作。
如果您想要更多in depth answer,我还发现此博客文章对您有所帮助。
答案 2 :(得分:0)
(或者,创建你自己的分叉 - 我不推荐)
您不必使用弹出。策划的功能集适用于中小型部署,您不应觉得有义务使用此功能。但是我们知道如果你准备好它就无法自定义它,这个工具就没用了。
否则您将无法自定义生成的服务工作者。
但是,如果您担心永久性eject
操作,则可以始终克隆项目目录并在克隆中使用npm run eject
来解决问题。原件将保持不变。
答案 3 :(得分:0)
我没有eject
您可以将工作人员放在public
文件夹中,然后您必须自己进行细分和缩小。
答案 4 :(得分:0)
第4版中的好消息!:
从Create React App 4开始,您可以完全控制 通过创建自己的服务,在此服务工作者中自定义逻辑 src / service-worker.js文件,或自定义由 cra-template-pwa(或cra-template-pwa-typescript)模板。