Программно передавать аргументы для задания grunt? - программирование
Подтвердить что ты не робот

Программно передавать аргументы для задания grunt?

У меня есть задача grunt, которая вызывает другие задачи grunt. Я хочу вызвать подзадачу с программно определенными аргументами. Это возможно? Я потратил некоторое время на поиск lib/grunt.js и lib/grunt/task.js, но не смог понять.

Я использую grunt-compass со следующими аргументами, указанными в Gruntfile.js:

compass: {
  default_options: {
    src: 'components/201',
    dest: 'build',
    require: ['zurb-foundation']
  }
}

Я хочу переопределить их во время выполнения:

Задачи/мой-task.js

// simplified example
module.exports = function(grunt) {
  grunt.registerTask('foo', 'bar', function() {
    var chooseDest = doWork();
    grunt.task.run('compass', {src: 'src', dest: chooseDest});
  });
};

Для справки:

$ grunt --version
grunt-cli v0.1.6
grunt v0.4.0rc6
4b9b3361

Ответ 1

Я понял это. Используйте синтаксис <%= %> в файле Gruntfile.js:

compass: {
  default_options: {
    src: 'components/<%= myTask.src %>',
    dest: 'build',
    require: ['zurb-foundation']
  }
}

Затем вы можете установить его в своей задаче:

grunt.config.set('myTask.src', getSrc());

Ответ 2

Вы можете редактировать всю конфигурацию Grunt:

grunt.config('compass.default_options.src', 'blabla');

Перед запуском задачи. Но ваше решение "чище".