workbox webpack 4 插件无法预缓存非 webpack 资产
workbox webpack 4 plugin unable to precache non-webpack assets
我希望使用 this documentation.
为 PWA 预缓存图像
我已经尝试了几次迭代,但我在处理 glob 时遇到了困难。
这是我 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();
值得一提的是,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
以及 copy-webpack-plugin 的实际代码以及调整 clean-webpack-plugin
new CleanWebpackPlugin(['public/dist/*.*', 'public/img/*.*']),
new CopyWebpackPlugin([
{ from: './assets/img/', to: '../img' },
]),
我希望使用 this documentation.
为 PWA 预缓存图像我已经尝试了几次迭代,但我在处理 glob 时遇到了困难。
这是我 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();
值得一提的是,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
以及 copy-webpack-plugin 的实际代码以及调整 clean-webpack-plugin
new CleanWebpackPlugin(['public/dist/*.*', 'public/img/*.*']),
new CopyWebpackPlugin([
{ from: './assets/img/', to: '../img' },
]),