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意味着什么?
答案 0 :(得分:3)
括号实际上定义了我们是否根据glob pattern跟踪我们找到的依赖关系。双星模式(**/*
)实际上也定义了"搜索子文件夹" 模式的一部分。
虽然它在配置JSPM的部分中有记录,但它也适用于使用CLI进行配置。 documentation
我们的目标是仅创建一组应用程序代码。我们必须以某种方式指示bundler不要递归地跟踪依赖项。你猜怎么着? [* .js]就是我们这样做的。
[* .js]将排除glob模式* .js产生的每个模块的依赖关系。在上述情况下,它将排除aurelia-framework,aurelia-fetch-client等。
例如,您将创建一个这样的模式:[src/**/*.js]
,您要求文件夹中的每个 javascript 文件以及{{1}的每个子文件夹没有跟踪任何依赖项。这意味着,如果src
中的模块A
需要src
中的模块B
,那么模块test
将赢得包括因为我们用括号表示我们不跟踪依赖关系
同样,如果您采用这样的模式:B
,则要求文件夹中的每个 javascript 文件以及src/**/*.js
的每个子文件夹,包括这些文件的任何依赖项。这意味着如果src
中的模块A
需要src
中的模块B
,则模块test
将包含,因为我们< em>是包括依赖项。
重要的是要注意这是 Aurelia 定义其依赖关系的方式。虽然我们使用glob模式和迷你匹配,但括号语法(据我所知)不是这些库的一部分,而是Aurelia快速轻松地定义我们是否跟踪的方法。