在一个夹杂物优先于排除物的世界里,这就是我想要的:
files : [
'app/bower_components/angular/angular.js',
'app/bower_components/angular-route/angular-route.js',
'app/bower_components/angular-mocks/angular-mocks.js',
'app/**/*.js',
],
exclude: [
'app/bower_components/**/*.js'
],
但是,在karma配置中,文件排除优先。
除了我决定保留的特定文件外,我能否轻易忽略bower_components文件夹中潜伏的任何内容?
答案 0 :(得分:2)
是的,你可以用一个模式做到这一点。 Karma在内部使用minimatch,因此以下情况应该适用于您出现的情况:
files : [
'app/bower_components/angular/angular.js',
'app/bower_components/angular-route/angular-route.js',
'app/bower_components/angular-mocks/angular-mocks.js',
'app/**/*.js',
],
exclude: [
'app/bower_components/**/!(angular.js|angular-route|angular-mocks).js',
],
我刚刚在我们的回购邮件中尝试了大量的angular-
文件,即使看起来该模式中存在无关的.js
,它似乎也在起作用。
排除
.js
的任何子文件夹中的每个bower_components
文件,但名为angular.js
,angular-route
或angular-mocks
的文件除外
现在,如果您愿意 - 您可以替换files: []
数组中的三个最顶层条目,只需添加app/bower_components/**/*.js
,因为正如您所说 - 排除优先于此 。只需继续堆放不想要排除的文件名,您应该自动包含这些文件名。
正如OP指出的那样 - 排除模式中的否定需要是包含扩展名的完整文件名,否则我们冒着包含匹配所述文件名的文件夹而没有扩展名的风险。
新模式将是:
'app/bower_components/**/!(angular.js|angular-route.js|angular-mocks.js).js',
从bower_components中排除所有.js文件,除了angular.js,angular-route.js和angular-mocks.js
至于包含,请在所有其他内容之前包含angular.js
,以免冒首先包含角度相关文件并自行崩溃的风险。