2014-05-09 15 views
49

Tôi là người dùng mới để gulp.js. Tôi muốn chuyển tất cả các tệp không phải javascript của tôi sang thư mục xây dựng. Những gì tôi đã có ngay bây giờ là thế này:Kết hợp toàn cầu, loại trừ tất cả các tệp JS

//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! 

Như bạn thấy, nó chỉ phù hợp sau dấu chấm đầu tiên trong chuỗi đường dẫn tập tin, không phải là người cuối cùng, như tôi muốn. Làm thế nào tôi có thể sửa đổi chuỗi tìm kiếm glob để cư xử như tôi muốn?

+0

tôi đã không sử dụng ngụm, nhưng có thể bạn chỉ cần thêm một $ đến hết mô hình được thông qua để gulp.src? –

+1

Không, thật đáng buồn đây không phải là Regex, mà là cú pháp [extglob] (http://www.gnu.org/software/bash/manual/bashref.html#Pattern-Matching). – AlexZ

Trả lời

92

Hãy thử mẫu glob này:

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

Làm việc như một sự quyến rũ. Đối với các stragglers trong tương lai, điều này gây ra vấn đề trong đó tệp kê khai '.json' của tôi cũng bị loại trừ. Tôi đã sửa đổi tập lệnh như vậy, nghĩa là nó vẫn sao chép các tệp 'config.js' hoặc' * .json': 'myProject/src/**/* (config.js | * .json |! (*. Js | * .src | * bản đồ)) ' – AlexZ

+1

Điều này chỉ làm cho ngày của tôi. – KFunk

+0

Điều này cực kỳ hữu ích cho việc khớp tệp với nút [grunt-ssh] (https://github.com/israelroldan/grunt-ssh) và [minimatch] (https://github.com/isaacs/minimatch). – craignewkirk

Các vấn đề liên quan