每次我运行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一起使用?
发布于 2015-05-21 06:16:03
你不应该使用run。这里有一个替代方案(解决你答案的这一部分),但不是你需要做的:
gulp
.start('default')
.once('task_stop', function(){
//do other stuff.
});如果您确实必须触发一个临时任务,但是可以直接使用run...You,那么可以使用带有任务名称的.start,并且还可以附加到task_stop处理程序,以便在任务完成时触发一些任务。在为吞咽任务编写测试时,这是很好的,但实际上仅此而已。
然而,在日常的吞咽使用中,这是一种反模式。
通常,您构建较小的任务并将它们组合在一起。这是正确的方式。请看以下内容:
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的情况下触发已经注册的较小的gulp任务
发布于 2015-03-03 20:11:43
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'])发布于 2015-03-17 15:30:38
你可以只使用普通的旧式javascript函数。据我所知,这被认为是一种更“贪婪”的做事方式。
我曾经遇到过类似的情况,基本上解决了这个问题,就像这样:
var watch = require('gulp-watch');
watch(['public/**/*.js','!public/**/*.min.js'], function(){
compress();
bsReload();
});然后,这些函数基本上就是对最初的吞咽任务的包装:
var compress = function () {
return gulp.src("stuff/**")
.pipe(gulp-compress())
.pipe(gulp.dest("./the_end/");
};人们很容易陷入这样的想法,即一个人必须对所有事情都使用吞咽任务,否则你就是“做错了”,但如果你需要使用这样的东西,那就去做吧。
如果你也想要一个具有相同功能的吞咽任务,那么就像这样:
gulp.task("compress", function () {
return compress();
});而且,如果您在其他地方需要相同的代码,您仍然可以利用gulp任务依赖关系。
https://stackoverflow.com/questions/28826418
复制相似问题