簡體   English   中英

Gulp/Lazypipe:錯誤:對lazypipe().pipe() 的調用無效:參數不是函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM