在遵循文档中的示例之后,我很难让gulp-watch或gulp-watch-less触发。我最初通过的问题是与延迟(没有显示在这里),但在我看来,我做了一些错误的方式,我正在使用插件。这是我的哑巴代码,它仍然不起作用。
请注意,我尝试了这一点与普通的吞咽表,它显示了完全相同的问题:它不会触发后续管道的变化。我会在这里包括这方面的信息,以防出现问题。
这是我的卷宗。
var debug = require ( 'gulp-debug' );
var gulp = require ( 'gulp' );
var less = require ( 'gulp-less' );
var watchLess = require ( 'gulp-watch-less' );
gulp.task ( 'dev-watch', function () {
// main.less just imports child less files
gulp.src ( './app/styles/less/main.less' )
.pipe ( watchLess ( './app/styles/less/main.less' ) )
.pipe ( debug () );
.pipe ( less () )
.pipe ( gulp.dest ( './app/styles' ) )
;
});当我启动任务时,它会执行并完美地生成预期的文件。我看到调试输出流信息也很好。
当我更改一个文件时,我看到watchLess正在接收更改:
[10:49:54] LESS saw child.less was changed
[10:49:54] LESS saw child.less was changed
[10:49:54] LESS saw main.less was changed:by:import
[10:49:54] LESS saw main.less was changed:by:import然而,较少的任务不执行。它似乎没有发射任何东西,因为调试不会触发。
以下是相关的package.json信息:
"devDependencies": {
"gulp": "^3.8.7",
"gulp-less": "^1.3.6",
"gulp-watch": "^1.2.0",
"gulp-watch-less": "^0.2.1"
}发布于 2015-07-22 09:39:54
您的代码只是在管道中运行观察者,但不知道接下来要做什么。
工作示例应如下:
var
gulp = require('gulp'),
debug = require ('gulp-debug'),
less = require ( 'gulp-less'),
watchLess = require('gulp-watch-less');
gulp.task('dev-watch', function () {
watchLess('./app/styles/less/main.less')
.pipe (debug ())
.pipe(less())
.pipe(gulp.dest('./app/styles'))
});然而,你也可以做同样的事情,仅仅使用吞咽-手表或吞咽(gulp.watch)。
发布于 2017-02-06 12:05:51
这一定是最好的解决方案,我在无吞咽的github;https://github.com/plus3network/gulp-less https://github.com/gulpjs/gulp/blob/master/docs/recipes/combining-streams-to-handle-errors.md npm i stream-combiner2 --save-dev中获得了自述。
var combiner = require('stream-combiner2');
var combined = combiner.obj([
gulp.src(srcs),
less(),
autoprefixer({
browsers: ['last 6 versions'],
cascade: false
}),
isDev ? null : cleanCss(),
gulp.dest(targetDir + 'css/multi/'),
].filter(v => v));
// any errors in the above streams will get caught
// by this listener, instead of being thrown:
combined.on('error', console.error.bind(console));
combined.on('end', () => {}); //done have been call when return combined;
return combined;https://stackoverflow.com/questions/27021570
复制相似问题