Trước hết, gulp.task('build', function (path)
sẽ không bao giờ hoạt động. Đối số hợp lệ duy nhất cho các nhiệm vụ gulp là một cuộc gọi lại để báo hiệu hoàn thành nhiệm vụ không đồng bộ. Nếu bạn đã cố gắng chạy trên, gulp sẽ mong đợi path
là một hàm và nhiệm vụ sẽ không bao giờ hoàn thành trừ khi hàm đó được gọi. Trong ví dụ này, nhiệm vụ 'build' phải là một hàm thông thường được gọi từ pipe 'bundles', không phải là một nhiệm vụ.
Câu hỏi hay hơn là: Làm cách nào để chạy chức năng tùy chỉnh bên trong ống gulp? Các plugin như gulp-tap có thể khiến bạn gần gũi, nhưng không khó để tạo ra những gì thực chất là một plugin gulp nội tuyến để gọi hàm của bạn.
Ống Gulp nhận được through2 luồng đối tượng có chứa vinyl file object, mã hóa và gọi lại. Dưới đây là một bộ xương cơ bản để gọi bất kỳ chức năng tùy ý chống lại các tập tin trong một đường ống ngụm:
var gulp = require('gulp');
var through = require('through2');
gulp.task('stack', function() {
return gulp.src('./src/*.js')
.pipe(through.obj(function(file, enc, cb) {
// file.path is the full path to the file
myBuildFunction(file.path);
cb(null, file);
}))
.pipe(gulp.dest('./build/'));
})
Đây có thể là vô cùng mạnh mẽ. Để sửa đổi nội dung của tệp, chỉ cần thay đổi bộ đệm file.contents
. Để đổi tên hoặc di chuyển tệp, hãy thay đổi file.path
. Tất cả mọi thứ có thể được thực hiện trong ống bản địa của gulp.