2014-05-09 17 views
49

Ich bin ein neuer Benutzer auf gulp.js. Ich möchte alle meine Nicht-Javascript-Dateien in ein Build-Verzeichnis verschieben. Was ich jetzt habe, ist dies:Glob-Matching, alle JS-Dateien ausschließen

//Test copy 
gulp.task('test-copy', function() { 
    gulp.src(['myProject/src/**/*.!(js|map|src)']) 
     .pipe(gulp.dest('myProject/build')); 
}); 


//Results for various files 
myProject/css/style.css //Copied - GOOD 
myProject/html/index.html //Copied - GOOD 
myProject/js/foo.js //Not Copied - GOOD 
myProject/js/bar.min.js //Copied - BAD! 
myProject/js/jquery-2.0.3.min.js //Copied - BAD! 
myProject/js/jquery-2.0.3.min.map //Copied - BAD! 

Wie Sie sehen können, sie paßt nur nach dem ersten Punkt in dem Dateipfad Zeichenfolge, nicht die letzten, wie Ich mag würde. Wie kann ich die Globensuchzeichenfolge so ändern, dass sie sich so verhält, wie ich möchte?

+0

ich schluck nicht benutzt haben, aber können Sie nur einen $ bis zum Ende des Musters in der gulp.src weitergegeben werden? –

+1

Nein, das ist leider nicht Regex, sondern [extglob] (http://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching) Syntax. – AlexZ

Antwort

92

dieses glob Muster Versuchen:

myProject/src/**/!(*.js|*.map|*.src) 
+22

Arbeitete wie ein Charme. Für zukünftige Nachzügler verursachte dies ein Problem, bei dem meine '.json'-Manifestdatei ebenfalls ausgeschlossen wurde. Ich habe das Skript so modifiziert, dass es 'config.js' oder' * .json' Dateien kopiert: 'myProject/src/**/* (config.js | * .json |! (*. Js | * .src | * map)) ' – AlexZ

+1

Das hat meinen Tag einfach gemacht. – KFunk

+0

Dies war sehr hilfreich für die Dateianpassung mit den Knoten [grunt-ssh] (https://github.com/israelroldan/grunt-ssh) und [minimatch] (https://github.com/isaacs/minimatch). – craignewkirk

Verwandte Themen