方括号在束源模式中的含义是什么?

时间:2016-08-29 23:14:27

标签: glob aurelia-cli minimatch

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

1 个答案:

答案 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快速轻松地定义我们是否跟踪的方法。