我有一个 Webpack 配置文件,它使用webpack-pwa-manifest插件 ( https://github.com/arthurbergmz/webpack-pwa-manifest ) 生成 PWA 清单文件。清单文件名为manifest.hash.json,其中“hash”是在每次构建时动态生成的值。
我还使用(https://developers.google.com/web/tools/workbox/modules/workbox-webpack-pluginInjectManifest )插件来渲染预缓存清单,然后将其注入到服务工作线程文件中。Workbox
这是我的 Webpack 配置文件的“插件”部分:
plugins: [
new CleanWebpackPlugin([ path.join(destDir, '*.*') ], {
allowExternal: true,
exclude: [],
verbose: true,
dry: false
}),
new MiniCssExtractPlugin({
filename: 'style.[hash].css'
}),
new VueLoaderPlugin(),
new HtmlWebpackPlugin({
template: path.join(projectRoot, 'src/index.html')
}),
new WebpackPwaManifest({
name: 'Test PWA',
short_name: 'Test PWA',
fingerprints: true,
inject: true,
lang: 'en-US',
start_url: 'https://localhost:8120/index.html',
display: 'standalone',
theme_color: '#777777',
background_color: '#333333',
icons: [
{
src: path.join(sourceDir, 'images/icon.png'),
sizes: [36, 48, 72, 96, 144, 192, 512],
destination: 'icons'
}
]
}),
new InjectManifest({
swSrc: path.join(projectRoot, 'src/sw.js'),
swDest: 'sw.js',
importWorkboxFrom: 'local',
globPatterns: ['dist/*.{json,js,html}']
})
]
Run Code Online (Sandbox Code Playgroud)
manifest.hash.json问题是我找不到将渲染添加到 InjectManifest 生成的预缓存清单中的方法。有什么办法可以让他们一起玩得很好还是不可能?
小智 -1
不知何故,插件生成的文件webpack-pwa-manifest不包含在 webpack 构建管道中(可能是一个错误),因此InjectManifest插件无法动态添加所有资源。
有一种解决方法可以使用globDirectory和globPatterns选项来预缓存其他资源:
new InjectManifest({
swSrc: './dist/sw.js',
globDirectory: '.',
globPatterns: ['dist/manifest.*.json']
})
Run Code Online (Sandbox Code Playgroud)
在此配置示例中,插件获取所有捆绑包和附加清单文件作为外部文件。但 webpack 会给你一个警告:
您正在使用以下 Workbox 配置选项:[globDirectory, globPatterns]。在 Workbox v3 及更高版本中,通常不需要这样做。
您应该仅将其用于不由 webpack 执行的资源。检查文档中的解释。
在您的特定配置中,问题是您错过了globDirectory: '.'选项并且插件找不到文件。
我希望它仍然具有相关性并对您有所帮助。
| 归档时间: |
|
| 查看次数: |
4261 次 |
| 最近记录: |