Подтвердить что ты не робот

Выполнение задачи Grunt в одном файле Grunt из другого

У меня есть Gruntfile в корне моего проекта. У меня также есть jQuery, установленный через Bower в каталоге app/components/jquery.

Как часть моего Gruntfile, я хотел бы запустить некоторые команды в файле jQuery Gruntfile для создания пользовательской версии библиотеки.

Как я могу получить свой файл Gruntfile у себя?

4b9b3361

Ответ 1

Вы можете создать простую задачу, которая порождает 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();
    });
});

Ответ 2

Если вы хотите получить консольный вывод, основываясь на ответе @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();
    });
});

Ответ 3

На основе ответов @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);
});

Ответ 4

Не знаю, работает ли это, но вы можете попробовать. ваш файл jQuery Gruntfile экспортируется через "module.exports". это должно означать, что вы можете потребовать его в своем коде и использовать его.

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

будет интересно услышать, если это сработает...