每次我吞下gulp,我都会看到此消息gulp.run() has been deprecated. Use task dependencies or gulp.watch task triggering instead.
示例代码:
var watch = require('gulp-watch');
watch(['public/**/*.js','!public/**/*.min.js'],function(){
gulp.run('compressjs');
gulp.run('bs-reload');
});
如何避免将gulp.run()
与gulp-watch一起使用?
答案 0 :(得分:3)
您不应该使用run
。这是一个替代方案(解决你的答案部分),但不是你需要做的事情:
gulp
.start('default')
.once('task_stop', function(){
//do other stuff.
});
如果你真的必须发起一个临时任务,但可以逐字地使用run ...你可以将.start
与任务名称一起使用,并附加到task_stop
处理程序以在任务完成。在为gulp任务编写测试时这很好,但实际上就是这样。
通常,您构建较小的任务并将它们合成。这是正确的方法。见:
var gulp = require('gulp'),
runSequence = require('run-sequence');
function a(){
//gulpstuff
}
function b(){
//gulpstuff
}
function d(callback){
runSequence('a', 'b', callback)
}
gulp
.task('a', a) // gulp a -runs a
.task('b', b) // gulp b runs b
.task('c', ['a', 'b']) //gulp c runs a and b at the same time
.task('d', d); //gulp d runs a, then b.
基本上如果c或d是一个监视任务,你就可以实现在没有.run
答案 1 :(得分:2)
gulp.run()
已被弃用,因为人们将其用作拐杖。你用它作为拐杖!
我不确定您使用gulp-watch
的原因,内置的gulp.watch
更适合您使用它的内容。请查看.watch的文档:https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulpwatchglob--opts-tasks-or-gulpwatchglob--opts-cb
这是你应该写的东西。 请了解您使用它的原因,而不仅仅是复制它:
gulp.watch(['public/**/*.js','!public/**/*.min.js'], ['compressjs', 'bs-reload'])
答案 2 :(得分:2)
您可以随时使用普通的旧JavaScript功能。从我所读到的内容来看,这被认为是一个更多的" gulp-ish"做事的方式。
我遇到过类似的情况,基本上用这样的方法解决了这个问题:
var watch = require('gulp-watch');
watch(['public/**/*.js','!public/**/*.min.js'], function(){
compress();
bsReload();
});
然后这些函数基本上是围绕原始gulp任务内容的包装器:
var compress = function () {
return gulp.src("stuff/**")
.pipe(gulp-compress())
.pipe(gulp.dest("./the_end/");
};
很容易陷入这样的想法:一个人必须使用gulp任务,否则你就会做错了#34;做错了#34;但如果你需要使用这样的东西去吧。
如果您还想要一个具有相同功能的gulp任务,那么请点击这样的内容:
gulp.task("compress", function () {
return compress();
});
如果你需要在其他地方使用相同的代码,你仍然可以利用gulp任务依赖。