【问题标题】:gulp.watch task crashes after first changegulp.watch 任务在第一次更改后崩溃
【发布时间】:2015-09-07 09:48:54
【问题描述】:

我是 gulp 的新手,我正在尝试查看 jam 和 less 文件并在移动新文件之前清理构建目录。不知何故,该任务在我第一次更改文件时起作用,然后它就不再继续观看了。 我找到了许多不同的解决方案,但没有一个对我有用。 以下是我的监视任务:

gulp.task('watch', function() {
   gulp.watch(config.lessDir + '/**.less', ['css']);
   gulp.watch(config.jadeDir + '/**.jade', ['jade']);
});

gulp.task('jade', function() {
   del.sync(['build/**.html']);

   return gulp.src(config.jadeDir + '/**.jade')
   .pipe(jade({ pretty: true }))
   .pipe(gulp.dest('./build'));
});

gulp.task('css', function() {
   del.sync(['build/css/**.*']);

   return gulp.src(config.lessDir + '/**.less')
   .pipe(less())
   .pipe(gulp.dest('./build/css'))
   .pipe(minifyCSS())
   .pipe(extReplace('.min.css'))
   .pipe(gulp.dest('./build/css'));
});

使用管道工时,我收到错误“未定义不是函数”。

编辑:似乎 del 不是问题,而是处理jade/less文件的管道。

【问题讨论】:

  • 注意:如果delthis,那么del.sync 是否 接受回调。 cb 可能永远不会被调用。现在这可能让 Gulp 感到困惑,当任务函数接收到一个参数时,它希望调用这个参数来知道任务已完成。实际上我不知道哪个优先确定任务完成,回调参数或返回的流,但如果不容易出错,使用两者至少会令人困惑。
  • 谢谢。我已经改变了。我的问题仍然存在。
  • 能不能去掉del部分看看问题是否依然存在?
  • 已经尝试过了,问题似乎出在处理较少文件的管道中。编辑:仅当我重命名 less 文件夹中的文件之一时才会出现此问题。生成新的 CSS 文件,然后 gulp 停止查看该文件夹。
  • 所以对于遇到相同问题的每个人:例如,不要使用绝对路径('./less/bla')。 gulp.watch 只采用看起来的相对路径('less/bla')。现在它就像一个魅力。

标签: node.js gulp watch


【解决方案1】:

对于遇到相同问题的每个人:如果您使用相对路径,gulp.watch 只会检测新文件或已删除文件。例如:使用“less”而不是“./less”。现在一切都应该像魅力一样工作。

【讨论】:

  • 欢迎堆栈溢出!您可以(并且应该)将自己的答案标记为正确,以使问题显示为已解决,而不是仍在等待答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多