Zunächst einmal gulp.task('build', function (path)
wird nie funktionieren. Das einzige gültige Argument für Schlucktasks ist ein Rückruf, um die Beendigung der asynchronen Task zu signalisieren. Wenn Sie versuchen würden, obiges auszuführen, würde Schluck erwarten, dass path
eine Funktion ist, und die Aufgabe würde niemals abgeschlossen werden, wenn diese Funktion nicht aufgerufen würde. In diesem Beispiel sollte die Task 'build' eine reguläre Funktion sein, die von der Pipes 'bundles' aufgerufen wird, keine Task.
Die bessere Frage wäre: Wie führe ich eine benutzerdefinierte Funktion in einem Schluckrohr? Plugins wie gulp-tap bringen Sie vielleicht in die Nähe, aber es ist nicht schwierig, ein Inline-Gulp-Plugin zu erstellen, das Ihre Funktion aufruft.
Gulp-Pipes empfangen einen through2 Objektstrom, der eine vinyl file object, eine Codierung und einen Rückruf enthält. Hier ist ein Grundgerüst jede beliebige Funktion gegen die Dateien in einem Zuge Rohr für den Aufruf:
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/'));
})
Dies kann unglaublich mächtig sein. Um den Inhalt der Datei zu ändern, ändern Sie einfach den file.contents
Puffer. Um die Datei umzubenennen oder zu verschieben, ändern Sie file.path
. Alles kann in den natürlichen Pfeifen des Schluckes getan werden.