So erstellen Sie ein grunt-task, Verweise anderen grunt-tasks
Ich habe eine Grunzen - Datei, die ich benutze, um meinen web-app.
Diese Grunzen Datei verwendet mehrere Grunzen contrib-plugins wie clean
, copy
, compass
, cssmin
usw. um richtig zu bauen, die web-app.
Diese Grunzen Datei ist auch handhaben soll, die Generierung der CSS und kopieren von Dateien für die Erstellung von Themen-CSS-Dateien. Derzeit, ich bin das hinzufügen von Zielen zu meinem clean
, copy
und compass
(etc.) Aufgaben für jedes Thema.
Dies ist immer unhandlich in der grunt-Datei und machen es schwierig und fehleranfällig, wenn neue Themen Hinzugefügt werden.
Dinge einfacher zu machen, ich würde wirklich gerne, um meine eigenen "Thema" Grunzen Aufgabe, die würde intern die Verwendung der anderen Grunzen contrib tasks ( clean
, copy
, compass
usw.) die Durchführung aller notwendigen Aufgaben für einen angegebenen Thema.
Nur mit einer winzigen Menge config-Daten für ein Thema (vor allem der source-Ordner) hätte ich genug info aufrufen, um die anderen Aufgaben (da das Thema Quell-und Ziel-Dateien sind sehr übereinkommens Gefahren).
Ich kann nicht scheinen, einen Weg zu finden, rufen Sie eine Aufgabe aus meiner benutzerdefinierte Aufgabe, wo ich es tun kann, und geben Sie alle config-Optionen, Dateien, usw.. programmgesteuert.
Hat jemand eine Idee, wie ich dies tun kann?
Dank, Ed
- Ich bin mir nicht sicher, was Sie erreichen möchten. Könnten Sie vielleicht Versorgung ein kleines code-Beispiel, das zeigt Ihr problem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
grunt.task.run(tasks)
Ich glaube nicht, dass Sie können führen Sie ein Grunzen multitask mit bestimmten Konfiguration, die als Mehrschritt-config gelesen wird, die Ziele, die in der Aufgabe angegebenen config.
Also eine Möglichkeit, um dies zu tun, ist zu ändern die task config, bevor es läuft.
Hier ist ein sehr einfaches Beispiel:
So einfach wie diese:
Ich hatte das gleiche problem und es gelöst.
Beachten Sie: grunt ist alle JavaScript-das ist laufen in Knoten, so dass Sie tun können, jedes Ding, was JavaScript-und node unterstützt.
Meine Lösung funktioniert so:
Zunächst legen Sie alle Sachen für den grunt der core-app in einer separaten JavaScript-Datei für die Instanz "grunt-my-app-core.js".
In diesem export sind zwei Funktionen,
init(grunt)
undgetConfig(grunt, options)
.init(grunt)
zu laden und das register Aufgaben. Könnte so sein:getConfig(grunt, options)
bauen und zurückgeben des config-Objekt:und als die
Gruntfile.js
in Ihrem Design-Projekt kann sehr kurz sein und braucht nicht all die Dinge, die der core-app. Es könnte so sein:Nun, wenn Sie ändern Sie etwas auf Ihre Kern-app, alle Themen, erhalten diese. Die einzige Sache, die Sie benötigen, um update-Handbuch sind die
devDependencies
impackage.json
Datei.