2014-04-30 18 views
186

Tôi có một nhiệm vụ gulp rjs nối và làm xấu tất cả các tệp .JS tùy chỉnh của tôi (mọi thư viện không phải của nhà cung cấp).Loại trừ các tệp/thư mục khỏi nhiệm vụ của Gulp

Những gì tôi đang cố gắng làm, loại trừ một số tệp/thư mục khỏi tác vụ này (bộ điều khiển và chỉ thị).

Heres cây của tôi:

- application 
    - resources 
     - js 
     main.js 
     - vendor 
      - jquery 
      - modernzr 
      - angular 
     - controllers 
      - controller1 
      - controller2 
      - controller3 
     - directives 
      - directives1 
      - directives2 
      - directives3 
     - widgets 
      - widget1 
      - widget2 
      - widget3 
      - widget4 
     - modules 
      - modules1 
      - modules2 
      - modules3 
      - modules4 

Đây gulp.js tôi câu trả lời

dir = { 
    app:  'application', 
    dest:  'dest', 
}; 

config = { 
    src: { 
     js: dir.app + '/resources/js' 
    }, 
    dest: { 
     js: dir.dest + '/resources/js' 
    } 
}; 

gulp.task('rjs', function() { 

     rjs({ 
      baseUrl: config.src.js, 
      out: 'main.js', 
      name: 'main', 
      mainConfigFile: config.src.js + '/main.js', 
      exclude: [ 'jquery', 'angular']   
     }) 
     .pipe(prod ? uglify({ mangle: false, outSourceMap: true, compress: { drop_console: true } }) : gutil.noop()) 
     .pipe(gulp.dest(config.dest.js)) 
     .pipe(filesize()) 
     .pipe(dev ? connect.reload() : gutil.noop()); 

}); 
+1

Bạn đã thử gulp-ignore chưa? https://www.npmjs.org/package/gulp-ignore – danbars

+1

@ user1655734: tài liệu gulp-ignore (https://www.npmjs.com/package/gulp-ignore) gợi ý mẫu loại trừ ('gulp.src (['./*.js', '! ./ node_modules/**']) ') trước tiên, sau đó gulp-ignore –

Trả lời

420

nhanh

On src, bạn luôn có thể chỉ định các tập tin để bỏ qua sử dụng "!"

Ví dụ (bạn muốn loại trừ tất cả * .min.js file vào thư mục js của bạn và thư mục con:.

gulp.src(['js/**/*.js', '!js/**/*.min.js']) 

Bạn có thể làm điều đó cũng cho các tập tin cá nhân

câu trả lời mở rộng:

Extracted from gulp documentation:

gulp.s rc (globs [, options])

Phát các tệp phù hợp với phần tử được cung cấp hoặc một loạt các bóng đèn. Trả về một luồng các tệp Vinyl có thể được chuyển vào các plugin.

glob đề cập đến nút-glob cú pháp hoặc nó có thể là một đường dẫn tập tin trực tiếp.

Vì vậy, tìm kiếm node-glob documentation chúng ta có thể thấy rằng nó sử dụng thư viện minimatch để thực hiện khớp.

On minimatch documentation, họ chỉ ra như sau:

nếu mô hình bắt đầu với một! nhân vật, sau đó nó bị phủ nhận.

Và đó là lý do tại sao sử dụng! biểu tượng sẽ loại trừ các tệp/thư mục khỏi tác vụ gulp

+10

Không nên tránh điều này? Đây là từ tài liệu về nút-glob: 'Phủ định Mục đích cho phủ định sẽ là mẫu bắt đầu! để khớp mọi thứ không khớp với mẫu được cung cấp. Tuy nhiên, việc thực hiện là lạ, và trong thời gian này, điều này nên tránh. Hành vi này không được chấp nhận trong phiên bản 5 và sẽ bị xóa hoàn toàn trong phiên bản 6.' –

+2

Tôi cần sử dụng: 'gulp.src ([/ * tập tin globs * /], {base:"."})' để có được các mẫu glob hoạt động chính xác – Scott

+0

@Scott: vâng, nhưng điều đó không liên quan gì đến câu trả lời/câu hỏi này. – avcajaraville

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