Karma文件:包括一切,除了忽略bower_components,除了包括特定的凉亭文件

时间:2015-07-18 17:43:34

标签: angularjs karma-runner bower

在一个夹杂物优先于排除物的世界里,这就是我想要的:

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文件夹中潜伏的任何内容?

1 个答案:

答案 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.jsangular-routeangular-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,以免冒首先包含角度相关文件并自行崩溃的风险。