gulp globbing- cách xem mọi thứ bên dưới thư mục


108

Đây là một câu hỏi khá ngớ ngẩn, nhưng tôi thực sự không thể tìm ra câu trả lời thỏa đáng: Làm cách nào để sử dụng gulp globbing để chọn tất cả các tệp trong tất cả thư mục con bên dưới một thư mục nhất định?

Tôi đã thử:

'./src/less' './src/less/' './src/less/*'

Không ai trong số họ dường như hoạt động.

Câu trả lời:


178

Mẫu cho tất cả các tệp trong tất cả các thư mục thường là ./src/less/**/*.*hoặc ./src/less/**/*, hoặc sẽ hoạt động.

Nói chung, tốt hơn là bạn nên khớp các phần mở rộng tệp cụ thể - ngay cả khi tất cả chúng phải giống nhau - để ngăn chặn việc lấy các tệp hệ thống hoặc các tệp rác khác. Trong trường hợp đó, bạn có thể làm ./src/less/**/*.lesschỉ với .lesscác tệp hoặc tương tự như vậy .src/less/**/*.{less,css}cho cả hai .less.css tệp tệp.

Trang web của Grunt có một tài liệu tham khảo khá tốt cho phần lớn những người yêu thích minimatch. (Cả Grunt và gulp đều sử dụng minimatch , vì nó là thư viện toàn cầu cho khá nhiều thứ liên quan đến Node.)

Sẽ rất tuyệt nếu gulp hoặc minimatch có tài liệu hoàn chỉnh của riêng họ, nhưng đó là nguồn mở dành cho bạn.


Tôi sẽ kiểm tra trang web Grunt, cảm ơn. Điểm về các tệp hệ thống chắc chắn có ý nghĩa. Lý do tôi muốn nó lỏng hơn một chút là vì tôi đang sử dụng nó để xem.
Jehan

1
Nếu bạn chưa có, tôi thực sự khuyên bạn nên học và sử dụng gulp-watchmô-đun để xem tệp, vì nó cũng có thể xử lý việc xem các tệp mới. Đó là một chút công việc để thiết lập, nhưng đáng giá, IMO.
OverZ ghen tuông

8
Để tham khảo trong tương lai, tôi sử dụng một công cụ tại globtester.com , nó sử dụng minimatch, công cụ này sử dụng theo cách của node-global. "perf đề cập đến cú pháp nút-cầu hoặc nó có thể là một đường dẫn tệp trực tiếp." (source: github.com/gulpjs/gulp/blob/master/docs/API.md ) "[node-global] sử dụng thư viện minimatch để thực hiện đối sánh." (source: github.com/isaacs/node-glob )
Daniel Dropik

1

'./src/less/**'dường như hoạt động. Tuy nhiên, nếu ai đó có một danh sách rõ ràng hơn về tất cả các lệnh cầu vồng, tôi sẽ sẵn lòng chấp nhận câu trả lời của bạn và thêm nó vào tài liệu gulp. Ngay bây giờ, bạn phải truy cập tài liệu cho một trong các mô-đun con của gulp, mô-đun này sẽ cung cấp cho bạn danh sách các trang. Sẽ rất tốt nếu có một tài liệu tham khảo trực tiếp, đặc biệt là đối với các nhà thiết kế sử dụng gulp.


1
gulp.watch('./build/**', ...)dường như (sai?) kích hoạt một số thay đổi trong thư mục mẹ (ví dụ: ./.git/). Thêm tắm / * ở cuối dòng dường như để tránh vấn đề rằng: gulp.watch('./build/**/*', ...).
medmunds

@medmunds Tôi đã tìm thấy kết quả tương tự. Hình cầu CÓ kết thúc bằng dấu * hoặc * .less cụ thể. *. * sẽ không hoạt động vì nó bỏ sót bất kỳ thứ gì nếu không có phần mở rộng. Nó dường như lấy . và đối sánh bằng cách sử dụng đối sánh kiểu POSIX; có nghĩa là nếu một tệp không có 'dấu chấm' trong đó, nó sẽ không khớp. Có lẽ có_mua_ là một trường hợp đặc biệt cho . như . qua DIR trên Windows khớp với 'LICENSE', nhưng rất tiếc là ln *.*không. Hai nghĩa khác nhau để ' . ' là buồn. *dường như làm những gì chúng ta cần. Một . Theo tôi, có lẽ không bao giờ là những gì nhà phát triển thực sự có ý định và có thể cần một cảnh báo.
Andrew T Finnell

@filthy_wizard - **là đệ quy.
Steven Ventimiglia,
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.