我遇到了类似的问题,如果不一样的话,并且在盯着这里的文档看了一会儿后能够梳理出一个答案:
https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin#generateSW-exclude
我想自动生成预缓存清单,但排除特定文件夹以及特定文件名。所以,我的 vue.config.js 现在是这样的:
pwa: {
workboxOptions: {
exclude: [
/index\.html$/,
/client-config\.js$/,
/^.*folder-to-exclude\/.*$/,
]
}
}
exclude/include 属性是正则表达式或字符串的数组。您的 exclude 表达式获取所有 svg 文件的原因很简单,根据您的正则表达式,您正在寻找以 .svg 结尾的任何内容.
你可以试试这样的:
module.exports = {
pwa: {
appleMobileWebAppCapable: 'yes',
appleMobileWebAppStatusBarStyle: 'black',
workboxOptions: {
include: [
/^.*shell\/.*$/,
],
exclude: [
/^.*svg\/.*$/,
]
}
}
};
请记住,由于我们指定了 include,因此我们不需要 exclude,因为 Webpack 只会抓取您在 include 下要求的内容>。但是,为了得到这个答案,我在上面的示例中添加了 include/exclude。
在不反复构建的情况下测试所有这些东西的一种方法是转到文件夹的根目录,在我的例子中是 public 文件夹,然后运行以下命令:
find .
这应该递归地获取所有文件/文件夹的列表并返回如下内容:
.
./svg
./svg/safari-pinned-tab.svg
./svg/safari-pinned-tab-2.svg
./svg/safari-pinned-tab-1.svg
./favicon.ico
./index.html
./shell
./shell/android-chrome-192x192.png
./shell/android-chrome-512x512.png
./img
./img/icons
./img/icons/favicon-16x16.png
./img/icons/safari-pinned-tab.svg
./img/icons/apple-touch-icon-120x120.png
./img/icons/android-chrome-192x192.png
./img/icons/apple-touch-icon.png
./img/icons/apple-touch-icon-152x152.png
./img/icons/apple-touch-icon-180x180.png
./img/icons/apple-touch-icon-76x76.png
./img/icons/android-chrome-512x512.png
./img/icons/msapplication-icon-144x144.png
./img/icons/mstile-150x150.png
./img/icons/apple-touch-icon-60x60.png
./img/icons/favicon-32x32.png
./robots.txt
然后,获取该输出并前往 regex101.com 并尝试与您的用例匹配的 include 和 exclude 表达式。这是一个例子:
https://regex101.com/r/nzEwCz/2/
我发现这只会帮助缩小表达式的范围,您需要在 IDE 中对其进行细化。我知道这是一个相当冗长的答案,如果您有任何问题,请在下方评论。
注意: Windows 框下的表达式可能不同,请参阅此问题/答案:https://stackoverflow.com/a/38190159/128795