访问Gruntfile.js中的Grunt输出

时间:2014-06-17 16:38:13

标签: gruntjs

简而言之,我想知道的是,是否有办法获取Grunt输出并在我的Gruntfile中访问它,以便能够发出http POST请求。

长形式:我想从Grunt(karma和jshint)运行测试中获取数据,并利用karma和jshint在post请求中是通过还是失败。是否有可能轻松完成这项工作?或者我是否需要做一些事情,比如将Grunt的输出写入文件,解析它,然后使用类似grunt.file的内容将数据读入我的Gruntfile?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

Grunt使用grunt.log对象中的方法来编写日志消息。正如您在sources中看到的那样,grunt.log现已在单独的模块grunt-legacy-log中实施。所以无论如何,我们可以从Gruntfile内部重新定义这些方法,以使用我们想要的日志执行任何操作。

首先,通过npm:

安装grunt-legacy-log
npm install grunt-legacy-log

然后,像这样重新定义grunt.log

module.exports = function (grunt) {
  var Log = require('grunt-legacy-log').Log;
  var log = new Log({grunt: grunt});

  function LogExtended() {
    for (var methodName in log) {
      if (typeof log[methodName] === 'function') {
        this[methodName] = (function (methodName) {
          return function () {
            var args = Array.prototype.slice.call(arguments, 0);

            // Filter methods yourself here to collect data
            // and perform any actions like POST to server
            console.log(methodName, args);

            // This will call original grunt.log method
            return log[methodName].apply(log, args);
          }
        }(methodName));
      }
    }
  }
  LogExtended.prototype = log;

  grunt.log = new LogExtended();

  grunt.initConfig({ .. });
};

那就是它。希望您能收集所需的数据并自行编写动作。