首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启用吞咽-有条件地观察与吞咽-如果(或其他东西)

启用吞咽-有条件地观察与吞咽-如果(或其他东西)
EN

Stack Overflow用户
提问于 2014-06-11 18:52:55
回答 1查看 2.5K关注 0票数 5

基本上,我想设置我的任务,以便如果我做gulp less --watch,它将观察,否则只需进行构建。到目前为止,这就是我所拥有的:

代码语言:javascript
复制
'use strict';

var gulp = require('gulp');
var less = require('gulp-less');
var gulpif = require('gulp-if');
var watch = require('gulp-watch');
var cli = require('minimist')(process.argv.slice(2));

gulp.task('less', function () {
  return gulp.src(['./client/styles/styles.less', './client/styles/libs.less'])
    .pipe(less({ sourceMap: !cli.production }))
    .pipe(gulp.dest('./dist/styles'))
    .pipe(gulpif(cli.watch, watch()));
});

所发生的情况是,它仍然执行watch,但不传递任何文件。这也阻止了任务从process.exit()ing..。

我假设我必须将它包装在某种东西中,或者使用另一种方法(不是gulp-if)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-13 13:12:53

gulp-watch是一个没完没了的流,所以如果调用它,它就不会允许进程退出。您的任务总是调用watch(),以便将它传递给gulpif,即使if不需要它。这意味着你将运行一个独立的观察者。此外,监视程序需要在管道链中处于第一位,这样它才能重新触发其余的处理程序。

您需要做的是使用命令行参数有条件地调用和附加watch()。运行一项执行监视的任务。此外,如果在监视程序之后出现错误,请使用gulp-plumber (https://github.com/floatdrop/gulp-plumber)来保持流正常工作。

代码语言:javascript
复制
var plumber = require('gulp-plumber');
gulp.task('less', function () {
    var src = gulp.src(['./client/styles/styles.less', './client/styles/libs.less']);

    if (cli.watch) {  // watch() won't be called without the command line arg
        src = src.pipe(watch()).plumber(); 
    }

    return src.pipe(less({ sourceMap: !cli.production }))
        .pipe(gulp.dest('./dist/styles'));
});
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24170445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档