[英]Gulp/Lazypipe: Error: Invalid call to lazypipe().pipe(): argument is not a function
我收到如下錯誤:
錯誤:對lazypipe().pipe() 的調用無效:參數不是函數。
切記不要直接調用流創建函數! 例如:pipe(foo),而不是pipe(foo())。
這對我來說完全有意義(特別是因為已經有一些相關的問題),但是我如何將參數傳遞給lazypipe?
function buildPipes(fileName) {
return lazypipe()
.pipe($.concat(fileName))
.pipe(gulp.dest(destFull))
.pipe($.rename(minFileName))
.pipe($.babel({
presets: ["es2015"]
}))
.pipe($.uglify({
compress: {
hoist_funs: false
}
}))
.pipe(gulp.dest(dest));
}
我腳本的另一部分,使用管道:
var vendor = gulp.src(sources.vendor).pipe(buildPipes(fileName));
lazypipe
文檔給出了幾個如何將參數傳遞給插件的示例。 這是一個:
var jsTasks = jsHintTasks
.pipe(gulp.dest, 'build/js');
更廣義的:對於任何插件功能foo
返回一個stream.Transform
下列轉換申請:
正常使用->lazypipe 使用
.pipe(foo())
-> .pipe(foo)
.pipe(foo(param1))
-> .pipe(foo, param1)
.pipe(foo(param1, param2))
-> .pipe(foo, param1, param2)
在你的情況下:
function buildPipes(fileName) {
return lazypipe()
.pipe($.concat, fileName)
.pipe(gulp.dest, destFull)
.pipe($.rename, minFileName)
.pipe($.babel, {
presets: ["es2015"]
})
.pipe($.uglify, {
compress: {
hoist_funs: false
}
})
.pipe(gulp.dest, dest);
}
另請注意, lazypipe().pipe(foo)
不返回流。 它返回一個返回流的函數,因此如果要將構造的lazypipe 通過管道傳輸到另一個流,則需要調用該函數。 這意味着而不是:
var vendor = gulp.src(sources.vendor).pipe(buildPipes(fileName));
你需要這樣做:
var vendor = gulp.src(sources.vendor).pipe(buildPipes(fileName)());
(或者,您可以在buildPipe()
函數本身中執行函數調用,如本例所示)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.