这个模式是如何工作的:'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结尾的文件