这个模式是如何工作的:'test / e2e / ** / *。spec.js'?
我看到这个模式在量angular器的configuration文件中使用。
specs: [ 'test/e2e/**/*.spec.js' ]
意思是“ test / e2e内的所有文件”。 这是什么样的模式? 我认为这不是正则expression式,因为那些非斜杠。 特别是,为什么中间有**
,而不仅仅是test/e2e/*.spec.js
?
我试图使用search引擎,但没有发现任何有用的可能是因为星号在search引擎中不能很好地工作。
这是什么样的模式?
它被称为“ glob ”。 模块glob是Node的一个stream行的实现,似乎是由Protractor使用的。
特别是为什么中间会有“**”,而不仅仅是“test / e2e / *。spec.js”?
**
意味着它可以匹配子目录。 这就像子目录的通配符。
例如, test/e2e/*.spec.js
将匹配test/e2e/example.spec.js
,但不匹配test/e2e/subdir/example.spec.js
。 然而, test/e2e/**/*.spec.js
与两者都匹配。
它被称为“glob”语法 。 Glob是一个允许使用一系列通配符指定文件的工具。
-
*.js
意思是“所有文件夹中的扩展名为js
。 -
**
表示“后代文件/文件夹。 -
**/*.js
意思是“在后代文件夹中带有js
扩展名的后代文件”。 -
test/e2e/**/*.spec.js'
表示上面,从test/e2e/
目录开始。
所以,例如,给定这个文件系统:
test/e2e/foo/a.spec.js <-- matches test/e2e/foo/butter.js <-- does not include "spec.js" test/e2e/bar/something.spec.js <-- matches test/other/something-different.spec.js <-- not in /test/e2e
最终的模式将匹配:
test/e2e/foo/a.spec.js test/e2e/bar/something.spec.js
这是一个混合模式。 大多数使用globbing模式的javascript东西似乎都是基于glob npm包的。 值得看看文档,因为当你有更复杂的情况时,有一些方便的提示。
您询问的path将匹配test/e2e
下任何子目录中任何以.spec.js
结尾的文件