如何使用负全局模式?

How to use negative glob pattern?

我们的构建生成 e2015 和 es5 包 - 例如在 dist 目录中,我们将有这样的文件:

/common-es2015.7765e11579e6bbced8e8.js
/common-es5.7765e11579e6bbced8e8.js
/custom.js

我们要配置 ngsw-config.json 以预取除名称中带有 es5 的所有 js 文件。

到目前为止我们尝试过的 glob 模式不起作用 - 但当我们使用此在线测试器时它们起作用

Example: 模式:/!(*es5)*.js

测试字符串:

/common-es2015.7765e11579e6bbced8e8.js
/common-es5.7765e11579e6bbced8e8.js
/custom.js
/favicon.ico 

正确选择了common-es2015*custom.js

但是当我们在 ngsw-config.json 中使用相同的模式时它不起作用 - 例如

{
  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": ["/favicon.ico", "/index.html", "/*.css", "/!(*es5)*.js"]
      }
    },

根据 angular docs 应该支持负 glob。

这个模式有什么问题?

我找到了一个很好的解决方案here

思路是先包含所有js文件,再排除es5文件:

{
  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": ["/favicon.ico", "/index.html", "/*.css", "/*.js", "!/*-es5*.js"]
      }
    }
}

然后我们可以为 es5 文件创建另一个惰性资产组:

{
  "name": "assets",
  "installMode": "lazy",
  "resources": {
    "files": ["..", "/*-es5*.js"]
  }
}