包源模式中的方括号是什么意思?

What do the square brackets mean in a bundle source pattern?

aurelia.json 文件有一个 bundles.source 属性。它似乎使用 minimatch 支持的 glob 语法。不过,开箱即用的 au new 模板包含一些模式周围的方括号。例如。

"[**/*.js]"

根据我的经验,方括号表示范围,例如 [a-z] 映射到 abcdefg...wxyz。这也是minimatch所推崇的。

> match = require("minimatch");
> match("q", "[a-z]");
true

在处理 bundles.source 属性 时,方括号对 Aurelia CLI 意味着什么?

括号实际上定义了我们是否根据 glob pattern 追踪我们发现的内容的依赖关系。双星模式 (**/*) 实际上是定义模式的 “搜索子文件夹” 部分。
虽然它在配置 JSPM 部分中有记录,但它也适用于使用 CLI 进行配置。 documentation

Our goal is to create a bundle of our application code only. We have to somehow instruct the bundler not to recursively trace the dependencies. Guess what? [*.js] is how we do it.

[*.js] will exclude the dependencies of each module that the glob pattern *.js yields. In the above case it will exclude aurelia-framework, aurelia-fetch-client and so on.

例如,您将创建这样的模式:[src/**/*.js],您要求文件夹中的每个 javascript 文件和每个子文件- src 的文件夹,不跟踪任何依赖项。这意味着如果 src 中的模块 A 需要 test 中的模块 B,那么模块 B 不会 被包括在内是因为我们用括号表示我们不是跟踪依赖关系。
同样,如果您采用这样的模式:src/**/*.js,您将要求文件夹中的每个 javascript 文件和 [=12= 的每个子文件夹] 包括 这些文件的任何依赖项。这意味着如果 src 中的模块 A 需要 test 中的模块 B,那么模块 B 将被 包含因为我们包括依赖项。

请务必注意,这就是 Aurelia 定义其依赖项的方式。虽然我们使用 glob 模式和最小匹配,但括号语法(据我所知)不是这些库的一部分,而是 Aurelia 快速轻松地定义我们是否正在跟踪的一种方式。