在另一个Gruntfile上运行grunt任务

Sim*_*ith 23 gruntjs

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

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

我如何从我的Gruntfile中获取?

Sin*_*hus 29

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

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();
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 这几乎可以工作....显示任务的输出需要什么.假设我有一个任务karma:使用`watch:true`运行我的单元测试的单元.我希望能够运行它并在屏幕上看到输出. (2认同)

Ste*_*mes 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();
    });
});
Run Code Online (Sandbox Code Playgroud)


Fre*_*fri 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);
});
Run Code Online (Sandbox Code Playgroud)