我正在尝试通过工作框4.3.1为Polymer 3生成服务工作者。
我想缓存的Bower和node_modules中有一些特定文件。
我尝试在globIgnores中添加“ en-in / node_modules / **”,并在globPattern中包含特定文件,例如-en-in/node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.*.js。
我尝试的配置出现错误。我什至尝试添加globStrict:false。即使那样也没有帮助。
下面是我的工作箱配置:
globDirectory: "dist",
globPatterns: ["en-in/**/*.{js,json,css}",
"en-in/node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.*.js"],
globIgnores: [
"en-in/sw-reg.js",
"en-in/sw-custom.js",
"en-in/rev-manifest.json",
"en-in/package.json",
"en-in/workbox-v4.3.1/**/*",
"en-in/node_modules/**"
],
globStrict: false,
我收到以下错误:
One of the glob patterns doesn't match any files. Please remove or fix the following:
{
"globDirectory": "dist",
"globPattern": "en-in/node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.*.js",
"globIgnores": [
"en-in/sw-reg.js",
"en-in/sw-custom.js",
"en-in/rev-manifest.json",
"en-in/package.json",
"en-in/workbox-v4.3.1/**/*",
"en-in/node_modules/**",
"**/service-worker.js"
]
}
在Workbox中进行球形化的code看起来像:
globbedFiles = glob.sync(globPattern, {
cwd: globDirectory,
follow: globFollow,
ignore: globIgnores,
strict: globStrict,
});
因为您以"en-in/node_modules/**"
模式之一传递globIgnores
,所以"en-in/node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.*.js"
永远不会匹配任何内容。在glob
module中,glob
始终优先。
您有多种方法可以解决此问题:
ignore
文件从custom-elements-es5-adapter.*.js
中移出到另一个目录,然后从那里加载它。node_modules
中的"en-in/**/*.{js,json,css}"
更改为globPatterns
,以使其默认情况下与"en-in/{dir1,dir2,dir3}/**/*.{js,json,css}"
不匹配,然后从node_modules
中删除"en-in/node_modules/**"
。然后,您可以将globIgnores
保留在[C0]中,它将不再被忽略。"en-in/node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.*.js"
中更改globPatterns
,使其与"en-in/node_modules/**"
不匹配。 (我忘记了这样做的语法,但是如果其他两个选项不起作用,您也许可以弄清楚。)可能还有其他几种选择。但是希望这可以解释根本原因。
在此处,聚合物3注释在其页面上供维修人员使用。他们使生活变得轻松:)
服务人员
服务工作人员已加载并注册到index.html文件中。但是,在开发过程中(为了使调试更容易),Service Worker实际上不存在,仅使用存根文件。
生产时间Service Worker是在构建期间自动创建的,即通过运行npm run build或npm run build:static。该文件是基于polymer.json和sw-precache-config.js配置文件生成的,您可以在每个构建目录下找到它:
globIgnores
默认情况下,所有源文件(/ src目录中的文件)都将被预先缓存,如sw-precache-config.js配置文件中所指定。如果您想更改此行为,请查看sw-precache-config文档。
来源:en-in/node_modules/@webcomponents