首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从格伦特到古普

从格伦特到古普
EN

Stack Overflow用户
提问于 2014-01-14 15:03:10
回答 3查看 7.2K关注 0票数 13

我目前正在尝试将我的Grunt文件转换为Gulp文件。我的第一次尝试是使用一个非常简单的文件,它只运行JSHint和Mocha,并且有一个监视模式。我的第一个结果是…well…幻灭。

我遇到了几个问题,我希望有办法解决这些问题:

  • 我意识到Gulp异步运行所有任务。如果我想等待任务完成,文档告诉我使用回调、承诺或返回流。但是我如何用gulp-mochagulp-jshint来完成这个任务呢?这些插件支持这个吗?
  • 失败的gulp-jshint不会使构建失败。如果gulp-jshint失败,我如何告诉Gulp停止进行?
  • 如Gulp入门指南中所述,使用watch模式会导致运行gulp时出现Too many open files错误。知道可能出了什么问题吗?

(请注意,我在这里无意中没有指定源代码,因为前两个问题是一般性问题,最后一个问题是默认文件。)

在这方面有什么帮助吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-16 22:14:26

关于任务依赖关系,最简单的解决方案是从任务返回gulp流,并依赖于该任务。

在下面的代码中,如果" server“任务不返回流,则它将异步运行,从而导致"serve”任务试图使用不存在的文件运行服务器。

代码语言:javascript
复制
gulp.task('server', function () {
  return gulp.src('server/**/*.coffee')
      .pipe(coffeescript())
      .pipe(gulp.dest('./dist/'));
});

var expressServer;

gulp.task('serve', ['server'], function () {
  var apiServer = require('./dist/server');
  expressServer = apiServer(function (server) {
    server.use(livereload({
      port: livereloadport
    }));

  });

  expressServer.listen(serverport);

  //Set up your livereload server
  lrserver.listen(livereloadport);
});
票数 10
EN

Stack Overflow用户

发布于 2014-01-14 17:20:09

“停止和失败”部分:

下面是jshint的一个功能示例:

代码语言:javascript
复制
var reporter = require('jshint-stylish');
var jshintRc = readJSON('.jshintrc');

// Implement asynchronous support returning the stream
gulp.task('myhinter', function() {
  // All js in src
  return gulp.src('./src/*.js')
    // options from file
    .pipe(jshint(jshintRc))
    // like stylish reporter
    .pipe(jshint.reporter(reporter))
    // Our turn!
    .pipe(map(function (file, cb) {
      // Notify the callback "true" if it failed on the file
      cb(!file.jshint.success, file);
    }));
})

// Now, define thattask to depend on myhinter
gulp.task('thattask', ['myhinter'], function(e) {
  console.warn('thattask is executing');
});

thattask依赖于任务myhinter的成功。

反过来,myhinter对文件进行jshint,记者使用时尚,如果至少有一个文件失败提示,则失败。

在这里,这是通过从myhinter任务返回流来实现的。

您可以在orchestrator文档中看到更多关于这一点的信息:https://github.com/robrich/orchestrator

我不使用摩卡,但稍后会看一看如何做。

关于太多打开的文件,是在OSX上吗?如果是这样的话,如果有帮助的话,也许可以看到这个在这里

票数 4
EN

Stack Overflow用户

发布于 2014-01-28 22:27:31

我解决了“打开的文件太多”在我的.bash_profile中添加以下行:

代码语言:javascript
复制
ulimit -n 10480
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21116759

复制
相关文章

相似问题

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