2012-06-16 14 views
21

Tôi đang sử dụng grunt tiếp nhau và hạn chế tối đa các file js của tôi, tôi sử dụng các cấu hình sau cho phần concat:Làm thế nào để phù hợp với tất cả các tập tin nhưng một trong concat grunt?

concat: { 
    dist: { 
    src: ['<banner:meta.banner>', 'js/*.js'], 
    dest: 'js/script.js' 
    } 
} 

Nó phù hợp với tất cả các tập tin trong thư mục js của tôi, nhưng tôi cần phải bỏ qua modernizr.js, là có một cách để làm điều này? Tôi giả sử tôi cần một số mẫu phù hợp với voodoo để làm điều đó nhưng tôi không chắc chắn như thế nào.

Xin cảm ơn trước.

+0

Lưu ý rằng ' 'js/* js.' 'là ** không ** một regex, nó là một bộ chọn đường dẫn (hoặc bất cứ cái gì chúng được gọi). Một regex sẽ là 'js \ /.* \. Js' ('. * 'Thay vì' * ', và thoát ít nhất là dấu chấm). Tôi sẽ xem xét các cách khác để loại trừ tệp, nó có thể có cấu hình bổ sung. – Kobi

+0

Bạn nói đúng, nó sử dụng 'minimatch' để chọn tệp chuyển đổi các biểu thức thành các đối tượng' RegExp' JavaScript vì vậy nó không phải là 100% regex – javiervd

Trả lời

33

Dựa trên documentation tôi sẽ cố gắng:

js/!(modernizr).js 
(js/)!(modernizr).js 
{js/}!(modernizr).js 
js/!({modernizr}).js 
(js/)!({modernizr}).js 
{js/}!({modernizr}).js 
js/!{modernizr}.js 
(js/)!{modernizr}.js 
{js/}!{modernizr}.js 

Nếu ai trong số họ là đi làm việc, sau đó có lẽ bạn là con ngoài may mắn ...

+3

Cảm ơn người đầu tiên đã làm việc tốt, tôi đã thử 'js /! Modernizr.js' trước khi không tự hỏi tại sao nó không hoạt động ... – javiervd

+2

@javiervd - Trong 'js /! modernizr.js' bạn đã sử dụng phủ định chỉ cho chữ' m', đó là lý do tại sao nó không hoạt động ... –