webentwicklung-frage-antwort-db.com.de

Wie kann ich eine Grunt-Aufgabe aus einer Grunt-Aufgabe heraus ausführen?

Ich habe eine neue Grunt-Aufgabe erstellt und darin möchte ich Grunt-Contrib-Concat verwenden, um einige Dateien miteinander zu verketten. 

Ich habe die Dokumente durchgesehen, finde aber nichts, was darauf hindeutet, dass ich dies tun kann. Es scheint ein trivialer Anwendungsfall zu sein, also bin ich wahrscheinlich gerade dabei, etwas zu suchen. 

Update 1:

Ich möchte diese Aufgabe auch von meiner benutzerdefinierten Aufgabe aus konfigurieren können.

Beispielsweise erstelle ich eine Liste von Dateien in meiner benutzerdefinierten Aufgabe. Nachdem ich diese Liste habe, möchte ich sie an die concat-Aufgabe übergeben. Wie kann ich das machen?

Ich würde gerne so etwas tun können.

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

Update 2:

Um zu erreichen, was ich will, muss ich die Grunt-Aufgabe manuell konfigurieren. Hier ist ein Beispiel, das mir zeigte, was ich wollte.

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

47
Arron S

Hier ist ein Beispiel für die manuelle Konfiguration einer Aufgabe innerhalb einer Aufgabe und deren Ausführung. 

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

Von 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

Danke an Arron, der uns zu seiner eigenen Frage in die richtige Richtung weist. Die grunt.config ist der Schlüssel aus dem obigen Beispiel. Diese Task überschreibt die src -Eigenschaft der browserify-Task 

Aufgabenstellung:

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

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

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

  }); 

Task-Aufruf:

grunt tests

oder

grunt tests:somewhere/specPath.js
11
elmuchacho

Wenn Sie sich faul fühlen, habe ich ein npm-Modul veröffentlicht, das die Konfigurationsdateien Ihrer Aufgabe in die zu erledigende Unteraufgabe weiterleitet:

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

0
ruyadorno