2015-02-21 3 views
12

Ich habe eine einfache AngularJS der Installation des Programms, die ein bisschen wie folgt aussieht:Mit Karma, wie schließe ich alle Dateien aus, die mit einem Muster außer denen in einem bestimmten Unterordner übereinstimmen?

client 
    vendor 
     angular 
     bootstrap 
     jquery 
     ... 
    app.module.js 
    app.controller.js 
    ... 
node_modules 
    angular-mocks 
    ... 

Ich bin eine karma.conf.js Datei und ich will angular\angular.js von vendor aufzunehmen. Ich möchte nichts anderes hinzufügen von vendor.

Hier ist, was ich in den entsprechenden karma.conf.js Abschnitte haben:

files: [ 
    'client/vendor/angular/angular.js', 

    'client/**/*.js', 
    'client/**/*.spec.js' 
], 

exclude: [ 
    'client/vendor/**/*.js' 
], 

Das Problem, das ich habe, ist einfach: Ich bin auch angular.js ausdrücklich in files, aber es wird dann im exclude Abschnitt Muster ausgeschlossen werden.

Wie kann ich alle client/vendor außer angular/angular.js (und vielleicht andere später) ausschließen? Das Verzeichnis client enthält viele Dateien, Unterordner usw., die meine eigenen .js-Dateien enthalten. Es ist also nicht einfach, alles, was ich aufnehmen möchte, einfach in einen eigenen Ordner zu verschieben.

Antwort

21

Versuchen Sie folgendes:

client/vendor/**/!(angular).js 

Example

Weitere Dateinamen kann so ausgeschlossen werden:

client/vendor/**/!(angular|angular-route).js 

Die Muster hier verwendeten globs genannt.

Hier ist eine kurze guide zu glob Funktionalität in Knoten von node-globs auf GH.

+0

Das ist ziemlich viel. Das nächste Problem, das ich hatte, war, dass sowohl angular.js als auch angular.min.js enthalten waren, also habe ich es einfach in! (Angular.js) geändert, was den Trick anscheinend gemacht hat. Danke für die Links auch - sehr nützlich. –

+1

Das funktioniert aber wird für alle Dateierweiterungen gelten und nicht nur für '.js' Dateien. Der einfachste Weg dazu ist '! (Angular *). Js', der auch zu jedem Winkelmodul usw. passt. – Mosho