Glob 模式包括所有 js 排除某些结尾
Glob pattern include all js exclude certain endings
我想将 glob 与 mocha 一起使用。遗憾的是,mocha 不支持 exclude 并且它也不传递 glob 选项,因此我必须在不使用 glob ignore 选项的情况下以单一模式解决此问题。 https://github.com/mochajs/mocha/issues/1577 The other solution would be to use mocha.opts, but that is not karma compatible, I am not sure why. I could define a karma compatible opts file for karma and a node compatible opts file for node, but this will break immediately after the issue is fixed, so I am looking for another solution. https://github.com/karma-runner/karma-mocha/issues/88
我需要匹配 test/**/*.spec.js
并从结果中排除 test/**/*.karma.spec.js
。单个 glob 模式是否可行?
这里说的是用逻辑运算符表示的AND("*.spec.js", NOT("*.karma.spec.js"))
。我检查了 glob 文档,它不支持 AND
逻辑运算符。
幸运的是,我们可以将此运算符转换为 OR
并取反:NOT(OR(NOT("*.spec.js"), "*.karma.spec.js"))
。我尝试了 test/**/!((!(*.spec.js)|*.karma.spec.js))
,但它不起作用。它试图要求一个带有 test/features
路径的模块,这是目录的路径而不是 js 文件,所以难怪它不管理它。我不知道那是什么样的错误,但它显然不起作用。
另一种可能的解决方案是忘记这个 AND
运算符,只使用 NOT("*.karma").spec.js
的否定。我用 test/**/!(*.karma).spec.js
试了一下,它工作正常。
您始终可以同时使用 mocha
和 find
。例如,以下命令将 return 列表 test/**/*.spec.js
并排除 test/**/*.karma.spec.js
:
find test -name '*.spec.js' ! -path '*.karma.spec.js'
结合mocha
实现你想要的效果:
mocha $(find test -name '*.spec.js' ! -path '*.karma.spec.js')
我想将 glob 与 mocha 一起使用。遗憾的是,mocha 不支持 exclude 并且它也不传递 glob 选项,因此我必须在不使用 glob ignore 选项的情况下以单一模式解决此问题。 https://github.com/mochajs/mocha/issues/1577 The other solution would be to use mocha.opts, but that is not karma compatible, I am not sure why. I could define a karma compatible opts file for karma and a node compatible opts file for node, but this will break immediately after the issue is fixed, so I am looking for another solution. https://github.com/karma-runner/karma-mocha/issues/88
我需要匹配 test/**/*.spec.js
并从结果中排除 test/**/*.karma.spec.js
。单个 glob 模式是否可行?
这里说的是用逻辑运算符表示的AND("*.spec.js", NOT("*.karma.spec.js"))
。我检查了 glob 文档,它不支持 AND
逻辑运算符。
幸运的是,我们可以将此运算符转换为 OR
并取反:NOT(OR(NOT("*.spec.js"), "*.karma.spec.js"))
。我尝试了 test/**/!((!(*.spec.js)|*.karma.spec.js))
,但它不起作用。它试图要求一个带有 test/features
路径的模块,这是目录的路径而不是 js 文件,所以难怪它不管理它。我不知道那是什么样的错误,但它显然不起作用。
另一种可能的解决方案是忘记这个 AND
运算符,只使用 NOT("*.karma").spec.js
的否定。我用 test/**/!(*.karma).spec.js
试了一下,它工作正常。
您始终可以同时使用 mocha
和 find
。例如,以下命令将 return 列表 test/**/*.spec.js
并排除 test/**/*.karma.spec.js
:
find test -name '*.spec.js' ! -path '*.karma.spec.js'
结合mocha
实现你想要的效果:
mocha $(find test -name '*.spec.js' ! -path '*.karma.spec.js')