web-dev-qa-db-fra.com

Comment puis-je exécuter une tâche Grunt à partir d'une tâche Grunt?

J'ai créé une nouvelle tâche grunt dans laquelle je souhaite utiliser grunt-contrib-concat pour concaténer quelques fichiers. 

J'ai jeté un coup d'œil à la documentation mais je ne trouve rien qui suggère de pouvoir le faire. Cela ressemble à un cas d'utilisation trivial, alors je suis probablement en train de regarder quelque chose. 

Mise à jour 1:

Je veux aussi pouvoir configurer cette tâche à partir de ma tâche personnalisée.

Par exemple, je crée une liste de fichiers dans ma tâche personnalisée. Après avoir cette liste, je veux les passer à la tâche de concat. Comment puis je faire ça?

J'aimerais pouvoir faire quelque chose comme ça.

grunt.task.run('concat', { src: ['file1','file2'], dest: 'out.js'})

Mise à jour 2:

Pour réaliser ce que je veux, je dois configurer manuellement la tâche Grunt. Voici un exemple qui m'a montré ce que je voulais.

https://github.com/gruntjs/grunt-contrib/issues/118#issuecomment-8482130

47
Arron S

Voici un exemple de configuration manuelle d'une tâche dans une tâche, puis de son exécution. 

https://github.com/gruntjs/grunt-contrib/issues/118#issuecomment-8482130

 grunt.registerMultiTask('multicss', 'Minify CSS files in a folder', function() {
        var count = 0;
        grunt.file.expandFiles(this.data).forEach(function(file) {
            var property = 'mincss.css'+count+'.files';
            var value = {};
            value[file] = file;
            grunt.config(property, value);
            grunt.log.writeln("Minifying CSS "+file);
            count++;
        });
        grunt.task.run('mincss');
    });
34
Arron S

De https://github.com/gruntjs/grunt/wiki/Creating-tasks

grunt.registerTask('foo', 'My "foo" task.', function() {
  // Enqueue "bar" and "baz" tasks, to run after "foo" finishes, in-order.
  grunt.task.run('bar', 'baz');
  // Or:
  grunt.task.run(['bar', 'baz']);
});
27
Pascal Belloncle

Merci à Arron qui nous a indiqué dans la bonne direction sa propre question. Le fichier grunt.config est la clé de l'exemple ci-dessus. Cette tâche remplacera la propriété src de la tâche browserify 

Définition de tâche:

  grunt.registerTask('tests', function (spec) {

    if (spec) {
      grunt.config('browserify.tests.src', spec);
    }

    grunt.task.run(['jshint', 'browserify:tests', 'jasmine']);

  }); 

Appel de tâche:

grunt tests

ou

grunt tests:somewhere/specPath.js
11
elmuchacho

Si vous vous sentez paresseux, j'ai fini par publier un module npm qui transfère les configs de votre tâche dans la sous-tâche que vous souhaitez exécuter:

https://www.npmjs.org/package/extend-grunt-plugin

0
ruyadorno