23

我的项目根目录中有一个 Gruntfile。我还通过 Bower 在 app/components/jquery 目录中安装了 jQuery。

作为我的 Gruntfile 的一部分,我想在 jQuery Gruntfile 上运行一些命令来构建库的自定义版本。

我如何从我的获取他们的 Gruntfile?

4

4 回答 4

29

您可以创建一个简单的任务,在您想要的文件夹中生成 grunt :

grunt.registerTask('run-grunt', function () {
    var done = this.async();
    grunt.util.spawn({
        grunt: true,
        args: [''],
        opts: {
            cwd: 'app/components/jquery'
        }
    }, function (err, result, code) {
        done();
    });
});
于 2013-05-27T17:29:45.100 回答
16

如果您想获得控制台输出,以@Sindre 的答案为基础,您所要做的就是控制台记录 result.stdout。

grunt.registerTask('run-grunt', function() {
    var cb = this.async();
    grunt.util.spawn({
        grunt: true,
        args: ['clean', 'copy:fonts'],
        opts: {
            cwd: 'bower_components/bootstrap'
        }
    }, function(error, result, code) {
        console.log(result.stdout);
        cb();
    });
});
于 2014-08-15T14:50:02.920 回答
11

根据@Sindre 和@Stephen 的回答,我们还可以“实时”获取控制台输出,而无需缓冲:

grunt.registerTask('run-grunt', function() {
  var cb = this.async();
  var child = grunt.util.spawn({
      grunt: true,
      args: ['clean', 'copy:fonts'],
      opts: {
          cwd: 'bower_components/bootstrap'
      }
  }, function(error, result, code) {
      cb();
  });

  child.stdout.pipe(process.stdout);
  child.stderr.pipe(process.stderr);
});
于 2015-11-10T15:30:11.103 回答
0

不知道这是否有效,但你可以试一试。您的 jQuery Gruntfile 通过“module.exports”导出。这应该意味着,您可以在代码中要求它并使用它。

var jQueryGrunt = require('path-to-jquery-gruntfile');
jQueryGrunt.task.run(['your-task-you-want-to-run']);

听听这是否可行会很有趣……

于 2013-05-23T12:04:35.240 回答