Running a grunt task on one Gruntfile from another

后端 未结 4 1117
予麋鹿
予麋鹿 2020-12-24 02:18

I have a Gruntfile in the root of my project. I also have jQuery installed via Bower in an app/components/jquery directory.

As part of my Gruntfile I\'d like to run

相关标签:
4条回答
  • 2020-12-24 03:01

    Based on @Sindre's and @Stephen's answer, we can also get the console output "in real time" without being buffered:

    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);
    });
    
    0 讨论(0)
  • 2020-12-24 03:03

    If you want to get console output, building on @Sindre's answer, all you have to do is console log the 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();
        });
    });
    
    0 讨论(0)
  • 2020-12-24 03:06

    You can create a simple task that spawns grunt in the folder you want:

    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();
        });
    });
    
    0 讨论(0)
  • 2020-12-24 03:08

    dont know if that works, but you could give it a try. your jQuery Gruntfile is exported via "module.exports". that should mean, that you can require it in your code and use it.

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

    will be interesting to hear if that works...

    0 讨论(0)
提交回复
热议问题