在使用Karma和伊斯坦布尔时不包括覆盖范围内的文件

我使用Karma来testing我的JavaScript并获得覆盖率报告。 我正在使用伊斯坦布尔的覆盖报告,这是默认的。 这是我的预处理器参数:

preprocessors: { 'framework/**/*.js':'coverage', 'framework/*.js':'coverage', '!framework/node/**/*.js':'coverage', '!framework/test/**/*.js':'coverage', 'framework-lib/**/*.js':'coverage', '!framework-lib/tool-data-api/tool-data-api.js':'coverage' } 

正如你所看到的,我正在尝试使用“!” 作为否定命令,通常与Node一起使用。 然而,这不是在这里工作,没有我的目录被排除在外。

有什么办法可以做我想做的事情吗?

根据https://karma-runner.github.io/0.12/config/configuration-file.html

** / *。js:所有子目录中所有带有“js”扩展名的文件
** /!(jquery).js:和以前一样,但不包括“jquery.js”
** /(foo | bar).js:在所有子目录中,所有“foo.js”或“bar.js”文件

所以,基于此,我尝试了以下内容:

 preprocessors: { 'framework/**/!(node|test)/*.js': 'coverage', 'framework-lib/**/!(tool-data-api).js': 'coverage' } 

这似乎已经完成了你在找什么。

作为对其他人谁来这里寻找如何定位除了.spec.js文件的所有文件的说明,请尝试:

 '**/!(*spec).js' 

这似乎为我工作。

在Karma中使用了minimatch.js的lib文件。 所以你需要重写你的规则。 例如排除它应该有的文件夹节点节点

 preprocessors: { 'framework/*[!node]/*.js':'coverage', } 

我不确定您是否运行“伊斯坦布尔封面”来运行您的报道报告,但是如果您是,可以使用-x标志来排除文件/模式。 在“伊斯坦布尔帮助封面”中input将显示您的使用情况,包括这一点。

  -x <exclude-pattern> [-x <exclude-pattern>] one or more fileset patterns eg "**/vendor/**" 

确保您要排除的目录/文件不被任何其他包含加载。 例如,'framework / / .js':'coverage'将载入你正试图排除在'!framework / node / / .js'中的文件:'coverage'