Tại sao gulp.src không thích được truyền một mảng các đường dẫn hoàn chỉnh đến các tệp?


94

Tôi đang cố chuyển gulp.src một mảng tệp mà tôi muốn nó xử lý. Đây là mảng như nó đứng.

['bower_components/jquery/jquery.js',
 'bower_components/superscrollorama/js/greensock/TweenMax.min.js',
 'bower_components/superscrollorama/jquery.superscrollorama.js' ]

Tôi thấy rằng gulp.src có vẻ không thích điều đó và phần tử thứ ba không đi qua được điểm đến cuối cùng.

Tôi thấy rằng mọi thứ đều hoạt động tốt khi tôi giới thiệu một số ký tự đại diện như sau:

['bower_components/**/jquery.js',
 'bower_components/**/js/greensock/TweenMax.min.js',
 'bower_components/**/jquery.superscrollorama.js' ]

Nhưng tại sao? Điều gì đó để làm với cách hoạt động của cầu? Tôi đã lên Google nhưng không thể tìm ra.

Có thể đây không phải là mục đích dự định của việc đánh bóng nhưng tôi thấy nó không hợp lý khi nó nên hoạt động theo cách này. Bất cứ ai có thể làm sáng tỏ một số?

Câu trả lời:


162

Khi bạn truyền vào một mảng các đường dẫn đầy đủ, mỗi tệp được xử lý độc lập. Quả cầu không biết gốc của con đường nằm ở đâu (trên thực tế, nó đoán dựa trên quả cầu đầu tiên). Do đó, mỗi tệp được bắt nguồn từ thư mục mà nó chứa, và đường dẫn tương đối trống.

Tuy nhiên, có một giải pháp dễ dàng. Truyền một đối tượng có khóa baselàm đối số thứ hai gulp.srcvà mọi thứ sẽ có đường dẫn tương đối chính xác:

return gulp.src(['bower_components/jquery/jquery.js',
                'bower_components/superscrollorama/js/greensock/TweenMax.min.js',
                'bower_components/superscrollorama/jquery.superscrollorama.js' ],
            {base: 'bower_components/'})
        .pipe(...);

23
Ngoài ra: Điều này hoàn toàn không được đề cập trong tài liệu gulp, bạn phải nhấp qua tài liệuglob-stream để tìm ra điều này.
Quá ghen tuông vào

9
điều gì sẽ xảy ra nếu tất cả các đường dẫn không có cùng một cơ sở? Tôi có một câu hỏi tương tự mở cho rằng kịch bản cụ thể: ngụm src không đọc cần json giá trị mảng hồ sơ của
Andre

1
cùng một câu hỏi từ phía tôi. Tôi có hai căn cứ khác nhau cho các công việc tôi cần phải chạy
Cynthia Sanchez

4
Có lẽ luôn có một cơ sở chung ở đâu đó trong hệ thống tệp đúng không? Ngay cả khi nó "/". Nếu gulp đang chạy từ gốc của dir dự án của bạn, bạn chỉ cần chỉ định dir hiện tại làm cơ sở và chuyển đến dir hiện tại. gulp.src(mixed, {base: "."}).pipe(doStuff).pipe(dest("."))
1311407
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.