Gulp运行替代方案

时间:2015-03-03 07:36:38

标签: gulp gulp-watch

每次我吞下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一起使用?

3 个答案:

答案 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

的情况下触发已注册的较小gulp任务的相同目标

答案 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任务依赖。