首页
学习
活动
专区
圈层
工具
发布

Gulp替代
EN

Stack Overflow用户
提问于 2015-03-03 15:36:38
回答 3查看 7.3K关注 0票数 4

每次我运行gulp时,我都会看到这条消息gulp.run() has been deprecated. Use task dependencies or gulp.watch task triggering instead.

示例代码:

代码语言:javascript
复制
var watch = require('gulp-watch');
watch(['public/**/*.js','!public/**/*.min.js'],function(){
    gulp.run('compressjs');
    gulp.run('bs-reload');
});

如何避免将gulp.run()与gulp watch一起使用?

EN

回答 3

Stack Overflow用户

发布于 2015-05-21 06:16:03

你不应该使用run。这里有一个替代方案(解决你答案的这一部分),但不是你需要做的:

代码语言:javascript
复制
gulp
    .start('default')
    .once('task_stop', function(){
        //do other stuff.
     });

如果您确实必须触发一个临时任务,但是可以直接使用run...You,那么可以使用带有任务名称的.start,并且还可以附加到task_stop处理程序,以便在任务完成时触发一些任务。在为吞咽任务编写测试时,这是很好的,但实际上仅此而已。

然而,在日常的吞咽使用中,这是一种反模式。

通常,您构建较小的任务并将它们组合在一起。这是正确的方式。请看以下内容:

代码语言:javascript
复制
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任务

票数 3
EN

Stack Overflow用户

发布于 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

这是你应该写的东西。请理解为什么要使用它,而不是仅仅复制它:

代码语言:javascript
复制
gulp.watch(['public/**/*.js','!public/**/*.min.js'], ['compressjs', 'bs-reload'])
票数 2
EN

Stack Overflow用户

发布于 2015-03-17 15:30:38

你可以只使用普通的旧式javascript函数。据我所知,这被认为是一种更“贪婪”的做事方式。

我曾经遇到过类似的情况,基本上解决了这个问题,就像这样:

代码语言:javascript
复制
var watch = require('gulp-watch');
watch(['public/**/*.js','!public/**/*.min.js'], function(){
    compress();
    bsReload();
});

然后,这些函数基本上就是对最初的吞咽任务的包装:

代码语言:javascript
复制
var compress = function () {
  return gulp.src("stuff/**")
          .pipe(gulp-compress())
          .pipe(gulp.dest("./the_end/");
};

人们很容易陷入这样的想法,即一个人必须对所有事情都使用吞咽任务,否则你就是“做错了”,但如果你需要使用这样的东西,那就去做吧。

如果你也想要一个具有相同功能的吞咽任务,那么就像这样:

代码语言:javascript
复制
gulp.task("compress", function () {
  return compress();
});

而且,如果您在其他地方需要相同的代码,您仍然可以利用gulp任务依赖关系。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28826418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档