2013-05-23 12 views
23

Mam plik Gruntfile w katalogu głównym mojego projektu. Mam również jQuery zainstalowane przez Bower w katalogu app/components/jquery.Uruchamianie zadania pomruczania na jednym pliku Gruntfile z innego

Jako część mojej Gruntfile chciałbym uruchomić niektóre polecenia z pliku jQuery Gruntfile, aby utworzyć niestandardową wersję biblioteki.

Jak mogę uzyskać ich pliki Gruntfile z mojej?

Odpowiedz

29

Można tworzyć proste zadanie, które spawns grunt w folderze chcesz:

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

To prawie działa .... co będzie potrzebne do to, aby pokazać wyjście z zadania. Załóżmy, że mam karmę zadania: jednostkę, która uruchamia moje testy jednostkowe z 'watch: true'. Chciałbym móc go uruchomić i zobaczyć wyjście na ekranie. –

0

Nie wiem, czy to działa, ale możesz spróbować. Twój plik jQuery Gruntfile jest eksportowany za pośrednictwem "module.exports". to powinno oznaczać, że możesz wymagać tego w swoim kodzie i używać go.

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

będzie interesujące usłyszeć, czy działa ...

16

Jeśli chcesz uzyskać wyjścia konsoli , opierając się na odpowiedzi @ Sindre, wszystko, co musisz zrobić, to zalogować się do konsoli 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(); 
    }); 
}); 
+1

Działa idealnie, choć oczywiście wyjście jest buforowane. – LeeGee

11

podstawie Sindre @ i @ odpowiedź Szczepana, możemy również uzyskać wyjścia konsoli „w czasie rzeczywistym” bez buforowane:

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); 
}); 
+0

Działa dobrze, także w programie Visual Studio Task Runner Explorer. Teraz mogę uruchamiać zadania z pliku gruntowego Bootstrap za pośrednictwem pliku gruntów w katalogu głównym projektu (co jest potrzebne do Eksploratora zadań) – ArieKanarie

Powiązane problemy