2015-02-21 12 views
12

Mam proste angularjs konfigurację aplikacji, która wygląda trochę jak ten:Za pomocą Karmy, w jaki sposób wykluczyć wszystkie pliki pasujące do wzorca, z wyjątkiem tych w określonym podfolderze?

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

mam powołaniu plik karma.conf.js i chcę to angular\angular.js z vendor. Nie chcę dodawać niczego innego z vendor.

Oto co mam w odpowiednich karma.conf.js sekcjach:

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

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

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

Mam problem jest prosty: Mam wyraźnie w tym angular.js w files, ale jest następnie wykluczeniem we wzorcu exclude przekroju.

Jak mogę wykluczyć wszystkie client/vendor z wyjątkiem angular/angular.js (i być może innych później)? Katalog client zawiera wiele plików, podfolderów itp., Które zawierają moje własne pliki .js, więc nie jest łatwo po prostu przenieść wszystko, co chcę, do własnego folderu, na przykład.

Odpowiedz

21

Spróbuj tego:

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

Example

Więcej nazwach można wykluczyć tak:

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

Wzorce stosowane tutaj nazywane są globs.

Oto krótka guide do funkcji glob w węźle od node-globs na GH.

+0

To prawie wszystko. Następny problem polegał na tym, że włączono zarówno angular.js, jak i angular.min.js, więc właśnie zmieniłem go na! (Angular.js), który wydaje się, że zrobił lewy. Dzięki za linki również - bardzo przydatne. –

+1

Działa to, ale będzie stosowane do wszystkich rozszerzeń plików, a nie tylko do plików '.js'. Najprostszym sposobem na to jest '! (Kątowy *). Js', który również pasowałby do dowolnych kątowych modułów itp. – Mosho

Powiązane problemy