gulp用命令行回调执行任务

时间:2019-08-02 07:41:39

标签: gulp

我正在用口水 v4

gulpfile.js:

function mysass() {
    return gulp.src([css.sasspth + '/site.scss'])
      .pipe(sass().on('error', sass.logError))
      .pipe(gulp.dest(css.assets));
  }

exports.mysass = mysass;

以上工作正常,但我想做一些不同的事情。 我想做的就是像这样将回调传递给gulp.src。

function mysass(filepath) {
    return gulp.src(filepath)
   .pipe(sass().on('error', sass.logError))
   .pipe(gulp.dest(css.assets));
}

exports.mysass = mysass;

当我在命令行中运行它时,我得到一个错误。

gulp mysass(css.sasspth + '/site.scss')

错误:

Task never defined: mysass(css.sasspth

如何使其正常工作?

1 个答案:

答案 0 :(得分:1)

无法像在Javascript中调用函数一样直接用参数调用Gulp任务。您可以使用与任何NodeJS应用程序相同的方法(例如minimistyargsCommander.js)从命令行提取参数,但是您需要自己以编程方式访问它们:

const argv = require('yargs').argv

function mysass() {
    return gulp.src(argv.path)
        .pipe(...)
        .pipe(gulp.dest(...))
}

当您尝试在自变量中访问变量css.sasspath时,您将需要调用eval()或类似的东西,但一如既往,请务必小心。