压缩发生在 __WB_MANIFEST 注入之前
compression happened before __WB_MANIFEST injection
我在 compression-webpack-plugin
中为文件名添加了 console.log 并且
在构建过程的最开始,会打印一条日志,实际上是在将 sw.js
文件的内容复制到一个名为 service-worker.js
的新创建的文件之后,但是此时没有关于 self.__WB_MANIFEST
必须由 workbox precacheAndRoute
宣讲。在构建过程结束时,当信息到达时,一个数组(宣讲时间及其修订)将被替换为 self.__WB_MANIFEST
并注入到 service-worker.js
,但不会发生压缩日志。
因此 service-wroker.js
.
的压缩文件和原始文件将不兼容
webpack 插件
{
plugins: [
// ...
new WorkboxPlugin.InjectManifest({
swSrc: './src/setup/sw.js',
swDest: 'service-worker.js',
exclude: [/\.(gz|br)$/],
maximumFileSizeToCacheInBytes: 10 * 1024 * 1024,
}),
// ...
new CompressionPlugin({
filename(pathData) {
console.log(pathData)
return '[path][base].gz'
},
algorithm: 'gzip',
minRatio: 0.8,
test: /\.(js|css|html|svg|wasm)$/,
})
]
}
packges.json
{
"webpack": "^5.4.0",
"compression-webpack-plugin": "^6.0.5",
"workbox-webpack-plugin": "^6.0.0-alpha.3",
}
如 this comment 中所述,此问题已解决,您应将 compression-webpack-plugin
升级到 v6.1.1。
我在 compression-webpack-plugin
中为文件名添加了 console.log 并且
在构建过程的最开始,会打印一条日志,实际上是在将 sw.js
文件的内容复制到一个名为 service-worker.js
的新创建的文件之后,但是此时没有关于 self.__WB_MANIFEST
必须由 workbox precacheAndRoute
宣讲。在构建过程结束时,当信息到达时,一个数组(宣讲时间及其修订)将被替换为 self.__WB_MANIFEST
并注入到 service-worker.js
,但不会发生压缩日志。
因此 service-wroker.js
.
webpack 插件
{
plugins: [
// ...
new WorkboxPlugin.InjectManifest({
swSrc: './src/setup/sw.js',
swDest: 'service-worker.js',
exclude: [/\.(gz|br)$/],
maximumFileSizeToCacheInBytes: 10 * 1024 * 1024,
}),
// ...
new CompressionPlugin({
filename(pathData) {
console.log(pathData)
return '[path][base].gz'
},
algorithm: 'gzip',
minRatio: 0.8,
test: /\.(js|css|html|svg|wasm)$/,
})
]
}
packges.json
{
"webpack": "^5.4.0",
"compression-webpack-plugin": "^6.0.5",
"workbox-webpack-plugin": "^6.0.0-alpha.3",
}
如 this comment 中所述,此问题已解决,您应将 compression-webpack-plugin
升级到 v6.1.1。