2015-02-21 4 views
12

Ho una semplice configurazione AngularJs applicazione, che sembra un po 'come questo:Usando Karma, come posso escludere tutti i file che corrispondono a un modello tranne quelli all'interno di una sottocartella specifica?

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

Sono la creazione di un file karma.conf.js e voglio includere angular\angular.js da vendor. Non voglio includere nient'altro da vendor.

Ecco quello che ho in pertinenti karma.conf.js sezioni:

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

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

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

Il problema che ho è semplice: sto compresi angular.js esplicitamente files, ma è poi stato escluso nel modello exclude sezione.

Come è possibile escludere tutto il client/vendor ad eccezione di angular/angular.js (e forse anche di altri in un secondo momento)? La directory contiene molti file, sottocartelle, ecc. Che includono i miei file .js, quindi non è facile spostare semplicemente tutto ciò che voglio includere in una cartella, ad esempio.

risposta

21

Prova questo:

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

Example

Più nomi di file possono essere esclusi in questo modo:

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

I modelli utilizzati qui sono chiamati globs.

Questa è una breve funzionalità di guide globale nel nodo da node-globs su GH.

+0

Questo è praticamente capito. Il problema successivo è stato che venivano inclusi sia angular.js che angular.min.js, quindi l'ho appena modificato in! (Angular.js), che sembra aver fatto il trucco. Grazie anche per i link - molto utile. –

+1

Funziona ma si applica a tutte le estensioni di file e non solo ai file '.js'. Il modo più semplice per farlo è '! (Angolare *). Js', che corrisponderebbe anche a tutti i moduli angolari ecc. – Mosho