Node.js 全局模式包括所有js,不包括某些结尾
我想在摩卡咖啡中使用glob。不幸的是,mocha不支持exclude,也不传递glob选项,所以我必须在一个模式中解决这个问题,而不使用glob ignore选项。另一个解决方案是使用mocha.opts,但这与业力不兼容,我不知道为什么。我可以为karma定义一个与karma兼容的opts文件,为node定义一个与node兼容的opts文件,但这会在问题解决后立即中断,因此我正在寻找另一个解决方案Node.js 全局模式包括所有js,不包括某些结尾,node.js,pattern-matching,mocha.js,glob,node-glob,Node.js,Pattern Matching,Mocha.js,Glob,Node Glob,我想在摩卡咖啡中使用glob。不幸的是,mocha不支持exclude,也不传递glob选项,所以我必须在一个模式中解决这个问题,而不使用glob ignore选项。另一个解决方案是使用mocha.opts,但这与业力不兼容,我不知道为什么。我可以为karma定义一个与karma兼容的opts文件,为node定义一个与node兼容的opts文件,但这会在问题解决后立即中断,因此我正在寻找另一个解决方案 我需要匹配test/***.spec.js并从结果中排除test/***.karma.spec
我需要匹配
test/***.spec.js
并从结果中排除test/***.karma.spec.js
。使用单个glob模式可以实现这一点吗?我们在这里讨论的是用逻辑运算符表示的和(“*.spec.js”,而不是(“*.karma.spec.js”)
。我查看了glob文档,它不支持和逻辑运算符
幸运的是,我们可以将此运算符转换为带否定的或:NOT(或(NOT(“*.spec.js”),“*.karma.spec.js”)
。我尝试了测试/**/!(!(*.spec.js)|*.karma.spec.js))
,但它不起作用。它试图要求一个具有test/features
路径的模块,该路径是目录的路径,而不是js文件,所以难怪它不管理它。我不知道那是什么样的错误,但它显然不起作用
另一种可能的解决方案是忘记这个和
操作符,只对而不是(“*.karma”).spec.js
使用否定。我用test/**/试过了!(*.karma).spec.js
,工作正常。您可以始终使用摩卡
和查找
。例如,以下命令将返回test/***.spec.js
的列表,并排除test/***.karma.spec.js
:
find test -name '*.spec.js' ! -path '*.karma.spec.js'
将其与摩卡咖啡相结合,以实现您想要的:
mocha $(find test -name '*.spec.js' ! -path '*.karma.spec.js')
我尝试了“test:“mocha--reporter spec\”test/***(.spec.js |!(.node.spec.js))\”,
。它已被解析,但我得到一个错误,无法找到模块test/features
。这很奇怪,因为该文件夹中没有.spec.js
或节点模块,只有BDD的.feature
文件。