创建带有参数的任务时,为什么会收到“任务不在您的gulpfile中”的信息?

时间:2019-01-07 19:56:25

标签: javascript gulp

我创建了一个简单的带有参数的任务:

gulp.task("js", () => {
    let stream = gulp
        .src("./src/**/*.js", { base: "./src/" })
        .pipe($.plumber())
        .pipe($.changed("temp"))
        .pipe(babel());

    // minify is min arguement provided
    if (args.min == true) stream = stream.pipe($.uglify());

    // Update paths
    stream
        .pipe(
            $.preprocess({
                context: {
                    PATH: save.dest,
                    COMMIT: pkg.version
                }
            })
        )
        .pipe(gulp.dest("temp"));

    return stream;
});

我想根据要进行质量检查还是PROD进行缩小:

gulp.task("push-dev", ["js"], function() {})

gulp.task("push-prod", ["js --min"], function() {})

但是我得到了错误:

  

[11:51:32]任务'js --min'不在您的gulpfile中

我正在尝试的可能吗?我试图避免创建一个全新的任务,只是为了处理不同环境中的缩小问题。

1 个答案:

答案 0 :(得分:1)

从任务中单独定义功能,而不是直接在gulp.task中定义功能。

let jsFunc = (doMininfy) => {
  let stream = gulp
    .src("./src/**/*.js", { base: "./src/" })
    .pipe($.plumber())
    .pipe($.changed("temp"))
    .pipe(babel());

  // assuming you meant the parameter to go here?
  if (doMininfy) stream = stream.pipe($.uglify());

  // Update paths
  stream
    .pipe(
        $.preprocess({
            context: {
                PATH: save.dest,
                COMMIT: pkg.version
            }
        })
    )
    .pipe(gulp.dest("temp"));

  return stream;
});

gulp.task("js", () => jsFunc());
gulp.task("js-min", () => jsFunc(true));
gulp.task("push-dev", ["js"], function() {});
gulp.task("push-prod", ["js-min"], function() {});