使用Karma,如何排除与特定子文件夹中的模式匹配的所有文件?

Kir*_*kin 20 javascript angularjs karma-jasmine

我有一个简单的AngularJs应用程序设置,看起来有点像这样:

client
    vendor
        angular
        bootstrap
        jquery
        ...
    app.module.js
    app.controller.js
    ...
node_modules
    angular-mocks
    ...
Run Code Online (Sandbox Code Playgroud)

我正在设置一个karma.conf.js文件,我想要包含angular\angular.js来自vendor.我不想包含任何其他内容vendor.

以下是我在相关karma.conf.js部分的内容:

files: [
    'client/vendor/angular/angular.js',
    'client/**/*.js',
    'client/**/*.spec.js'
],
exclude: [
    'client/vendor/**/*.js'
],
Run Code Online (Sandbox Code Playgroud)

我遇到的问题很简单:我angular.js明确地包括在内files,但它在exclude部分模式中被排除在外.

我怎样才能排除client/vendorangular/angular.js(以后可能是其他人)以外的所有内容?该client目录包含许多文件,子文件夹等,其中包含我自己的.js文件,因此仅将我想要包含的所有内容移动到自己的文件夹中并不容易.

Mos*_*sho 29

试试这个:

client/vendor/**/!(angular).js
Run Code Online (Sandbox Code Playgroud)

可以像这样排除更多文件名:

client/vendor/**/!(angular|angular-route).js
Run Code Online (Sandbox Code Playgroud)

这里使用的模式称为globs.

以下是GH 节点中glob功能的简短指南node-globs.

  • 这可行,但将适用于所有文件扩展名,而不仅仅是`.js`文件.最简单的方法是`!(angular*).js`,它也可以匹配任何角度模块等. (2认同)