1

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 意味着什么?

4

1 回答 1

3

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

我们的目标是只创建一个应用程序代码包。我们必须以某种方式指示捆绑器不要递归地跟踪依赖关系。你猜怎么着?[*.js] 是我们的做法。

[*.js] 将排除 glob 模式 *.js 产生的每个模块的依赖关系。在上述情况下,它将排除 aurelia-framework、aurelia-fetch-client 等。

例如,您将创建一个这样的模式:[src/**/*.js],您在不跟踪任何依赖关系的情况下要求文件夹和每个子文件夹中的每个javascript文件。src这意味着如果 module Ainsrc需要 module Bin test,那么 moduleB 将不会被包含,因为我们用括号表示我们没有跟踪依赖关系。
同样,如果您采用这样的模式:src/**/*.js,您将要求文件夹中的每个javascript文件以及src 包含这些文件的任何依赖项的每个子文件夹。这意味着如果 module Ainsrc需要 module Bin test,那么 moduleB 将被包括在内,因为我们正在包括依赖项。

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

于 2016-10-03T19:34:22.217 回答