【问题标题】:Gulp/Lazypipe: Error: Invalid call to lazypipe().pipe(): argument is not a functionGulp/Lazypipe:错误:对lazypipe().pipe() 的无效调用:参数不是函数
【发布时间】:2017-01-16 08:26:41
【问题描述】:

我收到上述错误:

错误:对lazypipe().pipe() 的无效调用:参数不是函数。

切记不要直接调用流创建函数!例如。: 管道(foo),而不是管道(foo())。

这对我来说完全有道理(尤其是因为已经有一些相关的问题),但是我怎样才能将参数传递给惰性管道呢?

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));

【问题讨论】:

    标签: javascript build gulp


    【解决方案1】:

    lazypipe docs 给出了几个如何将参数传递给插件的示例。这是一个:

    var jsTasks = jsHintTasks
        .pipe(gulp.dest, 'build/js');
    

    更概括地说:对于任何返回 stream.Transform 的插件函数 foo,都适用以下转换:

    正常使用 -> 惰性管道使用

    • .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) 不返回流。它返回一个返回流的函数,因此如果要将构造的惰性管道通过管道传输到另一个流,则需要调用该函数。这意味着而不是:

    var vendor = gulp.src(sources.vendor).pipe(buildPipes(fileName));
    

    你需要这样做:

    var vendor = gulp.src(sources.vendor).pipe(buildPipes(fileName)());
    

    (或者,您可以在 buildPipe() 函数本身中执行函数调用,如 this example 所示)

    【讨论】:

    • 不,lazypipe 是由OverZealous 编写的。我只是回答很多问题,因为我非常了解它,而且似乎没有很多人愿意或能够这样做。
    猜你喜欢
    • 2017-02-27
    • 1970-01-01
    • 2019-11-24
    • 2018-07-08
    • 2016-11-10
    • 1970-01-01
    • 2020-09-16
    • 2017-03-22
    • 2019-05-17
    相关资源
    最近更新 更多