我在protractor的配置文件中看到了这种模式。
specs: [
'test/e2e/**/*.spec.js'
]
表示它意味着“ test / e2e ”中的所有文件。这是什么样的模式?我认为这不是正则表达式,因为那些未转义的斜杠。特别是,为什么**
位于中间,而不只是test/e2e/*.spec.js
?
我尝试使用搜索引擎,但没有找到任何有用的东西可能因为星号在搜索引擎中效果不佳。
答案 0 :(得分:7)
这是什么样的模式?
它被称为" glob"。模块glob是Node的流行实现,似乎是Protractor使用的模块。
特别是,为什么会出现" **"在中间,不只是" test / e2e / * .spec.js"?
**
表示它可以匹配子目录。它就像子目录的通配符。
例如,test/e2e/*.spec.js
匹配test/e2e/example.spec.js
,但不匹配test/e2e/subdir/example.spec.js
。但是test/e2e/**/*.spec.js
与之匹配。
答案 1 :(得分:5)
It is called "glob" syntax。 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
答案 2 :(得分:3)
这是一种全球化的模式。使用globbing模式的大多数javascript事物似乎都基于glob npm包。值得一看文档,因为当你遇到更复杂的情况时,会有一些方便的提示。
您询问的路径将匹配.spec.js
test/e2e
结尾的任何文件