我希望使用this documentation.
为PWA预缓存图像我尝试了几次迭代,但是我正在努力解决这些问题。
这是我的webpack.config.js
上插件代码的一个实例:
new InjectManifest({
swSrc: './client/sw-src.js',
swDest: '../sw.js',
exclude: [/\.twig$/],
globPatterns: ['/img/*.{svg,jpg,webp}']
}),
目录结构如下:
/public
/dist => there's where the 'regular' webpack assets are
/img => directory I want to add to precache on top of /dist
...
我也尝试过使用globDirectory
,但是没有运气。
如果我将下面的代码手动添加到我的sw-src.js
文件中,它会起作用,但这并不理想,并且容易出错。
workbox.precaching.precache([
'/img/circles.svg',
'/img/concept-1.jpg',
......
]);
workbox.precaching.addRoute();
答案 0 :(得分:1)
值得一提的是,Workbox可以使用已添加到编译输出中的webpack资产。可能在构建上下文中有文件,例如存储库中的图像,但是实际上确实需要这些文件或将其添加到输出中。
一种简单的方法是使用copy-webpack-plugin
。当从其他构建工具迁移到webpack时,或者当您动态构造资产URL而不使用webpack加载器时,这确实很有用。
编辑:使用实际解决方案添加设置:
这是新的目录设置:
/assets/img/ => origin directory for copy-webpack-plugin
/public
/dist => there's where the 'regular' webpack assets are
/img => destination directory for copy-webpack-plugin
复制webpack-plugin的实际代码,并调整clean-webpack-plugin
new CleanWebpackPlugin(['public/dist/*.*', 'public/img/*.*']),
new CopyWebpackPlugin([
{ from: './assets/img/', to: '../img' },
]),