Workbox v5
移行時に
前提
- 移行前の
Workboxの Version
移行前のWorkboxの Versionは 以下の 通りです。 % npm list --depth 1 | grep workbox ├── workbox-sw@3.6.3 └─┬ workbox-webpack-plugin@3.6.3 └── workbox-build@3.6.3
インストール
workbox-sw と、
npm install workbox-webpack-plugin@latest --save-dev npm install workbox-sw@latest --save-dev npm audit fix
Webpack で ビルドを 実行して、 出力される エラーに 対処する
インストール後に、
handlerに 指定できる Storategyの 名称変更
以下の
ERROR in Please check your GenerateSW plugin configuration: child "runtimeCaching" fails because ["runtimeCaching" at position 0 fails because [child "handler" fails because ["handler" must be a Function, "handler" must be one of [CacheFirst, CacheOnly, NetworkFirst, NetworkOnly, StaleWhileRevalidate]]]]
以前は、
修正前
new GenerateSW({ importWorkboxFrom : 'cdn', runtimeCaching: [ { urlPattern: /\/api\/v2\/.+/, handler: 'networkFirst', options: { expiration: { maxAgeSeconds: 60 * 60 * 24, maxEntries: 20 }, cacheName: "api", cacheableResponse: { statuses: [0, 200] } } },
修正後
new GenerateSW({ importWorkboxFrom : 'cdn', runtimeCaching: [ { urlPattern: /\/api\/v2\/.+/, handler: 'NetworkFirst', options: { expiration: { maxAgeSeconds: 60 * 60 * 24, maxEntries: 20 }, cacheName: "api", cacheableResponse: { statuses: [0, 200] } } },
importWorkboxFrom の 廃止
続いて
ERROR in Please check your GenerateSW plugin configuration: "importWorkboxFrom" is not a supported parameter. ```` workbox-webpack-pluginのGenerateSWで、`importWorkboxFrom` オプションはv5からサポートされなくなった結果出力されるエラーのようです。 以前、CDNで配布しているWorkboxのJavasScriptをimportScriptsで読み込むようにしていましたが、 v5から、localにライブラリjsがコンパイル、生成されるようになりました。 `NODE_ENV`の設定に従い、圧縮もされるようです。 `importWorkboxFrom`の廃止に伴い、追加されたオプション等は、以下のIssueから確認できます。 * [generateSW uses custom Workbox runtime bundles, not CDN · Issue #2064 · GoogleChrome/workbox](https://github.com/GoogleChrome/workbox/issues/2064) * **修正前** ```json new GenerateSW({ importWorkboxFrom : 'cdn', runtimeCaching: [ {
- 修正後
new GenerateSW({ runtimeCaching: [ {
Precache対象の リソースの 容量指定の 追加
続いて、
WARNING in /static/webpack_bundles/1-a49921c3.js is 2.25 MB, and won't be precached. Configure maximumFileSizeToCacheInBytes to change this limit. WARNING in /static/webpack_bundles/vendor-4731391b.js is 3.32 MB, and won't be precached. Configure maximumFileSizeToCacheInBytes to change this limit.
Precache可能な
Precacheしたい
* workbox/defaults.js at 1a77f7f9d26ec4c4b6ac51ae943c70041f17e14f · GoogleChrome/workbox
一旦、
修正前
new GenerateSW({ runtimeCaching: [
*修正後
new GenerateSW({ maximumFileSizeToCacheInBytes: 1024 * 1024 * 5, runtimeCaching: [
参考
以下、
- Migrate from Workbox v3 to v4 | Google Developers
- Migrate from Workbox v4 to v5 | Google Developers
- Release Workbox v5.0.0 · GoogleChrome/workbox
- Node.js – npmで
パッケージを 更新する | | KeruuWeb - Using npm update and npm outdated to update dependencies
これで、
後は、
以上です。
コメント