在一个包含优先于排除的世界中,这就是我想要的:
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 文件夹中可能潜伏的所有内容吗?
最佳答案
是的,您可以使用模式来做到这一点。 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
,但它似乎正在工作。
Exclude every
.js
file in any subfolder ofbower_components
, except for files named eitherangular.js
,angular-route
orangular-mocks
.
现在,如果您愿意 - 您可以替换 files: []
数组中最上面的三个条目,然后只需放入 app/bower_components/**/*.js
因为正如你所说 - 此处排除优先。只需继续堆积您不想想要排除的文件名,您应该会自动包含这些文件名。
编辑
正如OP所指出的 - 排除模式中的否定必须是包括扩展名的完整文件名,否则我们将面临包含与所述文件名匹配但没有扩展名的文件夹的风险。
新模式是:
'app/bower_components/**/!(angular.js|angular-route.js|angular-mocks.js).js',
Exclude all .js files from bower_components except angular.js, angular-route.js and angular-mocks.js
至于包含,请在所有其他文件之前包含 angular.js
,以免冒首先包含 Angular 相关文件并自行崩溃的风险。
关于angularjs - Karma 文件 : include everything, 除了忽略 Bower_components,除了包含特定的 Bower 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31493806/