46 votes

Passer les arguments par programme à la tâche grognante?

J'ai un grognement tâche qui appelle d'autres tâches grunt. Je veux appeler un sous-tâche avec par programme déterminé arguments. Est-ce possible? J'ai passé un peu de temps à creuser autour de la lib/grunt.js et lib/grunt/task.js, mais ne pouvait pas le comprendre.

Je suis à l'aide d' grunt-compass avec les arguments suivants spécifié dans Gruntfile.js:

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

Je veux être en mesure de les remplacer au moment de l'exécution:

tasks/my-task.js:

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

Pour référence:

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

58voto

Rosarch Points 23501

Je l'ai compris. Utilisez la syntaxe <%= %> dans Gruntfile.js:

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

Ensuite, vous pouvez le définir dans votre tâche:

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

3voto

Thomas Decaux Points 2613

Vous pouvez éditer toute la configuration de Grunt:

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

Juste avant d'exécuter la tâche. Mais votre solution est "plus propre".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X