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