【问题标题】:gulp watch doesn't watchgulp watch 不看
【发布时间】:2015-04-28 20:47:32
【问题描述】:

以下是我的 gulpfile.js。其中还有几个任务,所有任务都运行良好 - 但最后一个任务,watch 没有。

我已经尝试了所有可能的路径和文件组合,但我仍然没有运气。我在这里阅读了很多关于此的答案,但无法解决我的问题。我尝试在需要和不需要 gulp-watch 的情况下运行 gulp.watch,尝试了几种不同的方法来设置任务等等......

var gulp = require('gulp');
var browserify = require('browserify');
var babelify = require('babelify');
var source = require('vinyl-source-stream');
var watch = require('gulp-watch');

gulp.task('application', function() {
    return browserify('./public/resources/jsx/application.js')
        .transform(babelify, { stage: 0 })
        .bundle()
        .on('error', function(e){
            console.log(e.message);

            this.emit('end');
        })
        .pipe(source('appBundle.js'))
        .pipe(gulp.dest('./public/resources/jsx'));
});

gulp.task('watch', function() {
    gulp.watch('./public/resources/jsx/project/*.js',['application'])
});

有人可以提出解决方案吗?

编辑:

这是控制台输出:

michael@michael-desktop:/opt/PhpstormProjects/app_april_2015$ gulp watch
[23:05:03] Using gulpfile /opt/PhpstormProjects/app_april_2015/gulpfile.js
[23:05:03] Starting 'watch'...
[23:05:03] Finished 'watch' after 13 ms

【问题讨论】:

  • 你在做什么?什么不工作?
  • 启动任务后,它运行一次,完成没有错误,但永远不会再次触发。不管我对文件做什么。 @JMM
  • “开始任务”是指gulp watch? “文件”是指application.js?
  • “开始任务”就是开始g​​ulp watch

标签: javascript node.js task gulp


【解决方案1】:

你应该return观看:

gulp.task('watch', function() {
    return gulp.watch('./public/resources/jsx/project/*.js',['application'])
});

watch 是一个 async 方法,所以 Gulp 知道发生了什么事情的唯一方法是如果你返回一个 promise,watch 会这样做。

编辑

正如@JMM 所说,watch 不会返回 Promise。它返回一个EventEmitter

【讨论】:

  • @andrerpena 从任务中返回承诺只是指示何时完成的几种方式之一。并且 gulp.watch() 被记录为返回一个 EventEmitter。
  • 啊,就是这样。谢谢!
  • @JMM。谢谢,我修好了。迈克尔,不客气。
  • @andrerpena 所以这引出了一个问题:如果gulp.watch() 返回一个EventEmitter,并且OP 的控制台输出显示watch 任务完成——你的答案如何,返回gulp.watch(),有这个效果?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-18
  • 1970-01-01
  • 1970-01-01
  • 2016-12-24
相关资源
最近更新 更多