如何使用 webpack encore 设置 service worker?

How to set service worker with webpack encore?

关于一切都在标题中,我想知道如何使用 Webpack Encore 设置我的 service worker。

我尝试在 webpack.config.js 中使用 .addEntry('sw', './assets/js/sw.js'),但是,
navigator.serviceWorker.register("/build/sw.js") 在开发环境中工作时,
prod 中的编译文件已重命名为 /build/sw.8346cedc.js,不再匹配调用。

我应该怎么做才能呼叫我的服务人员?

您可以使用 {{ encore_entry_js_files('sw') }} twig 函数获取 service worker 脚本路径。

在 html 中创建一个全局变量,如下所示。

<script>
var swPath = "{{ encore_entry_js_files('sw') | first }}";
</script>

如果您的 webpack.config.js 具有 .splitEntryChunks() 功能,您仍然会遇到麻烦,因为 runtime.js 将被分离。