【问题标题】:gulp execute task with callback in command linegulp 在命令行中使用回调执行任务
【发布时间】:2019-08-03 19:29:42
【问题描述】:

我正在使用 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

如何让它发挥作用?

【问题讨论】:

    标签: gulp


    【解决方案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() 或类似的东西,但一如既往,这样做时要小心。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多