Ich habe eine grunt Datei, die ich zum Erstellen meiner Web-App verwende.
Diese grunt -Datei verwendet mehrere grunt contrib-Plugins wie clean
, copy
, compass
, cssmin
usw., um die Web-App korrekt zu erstellen .
Diese grunt -Datei soll auch das Erzeugen von CSS und das Kopieren von Dateien zum Erstellen thematischer CSS-Dateien ermöglichen. Derzeit füge ich Ziele zu meinen Aufgaben clean
, copy
und compass
(usw.) für jedes Thema hinzu.
Dies wird in der Grunt-Datei unhandlich und macht es schwierig und fehleranfällig, wenn neue Themen hinzugefügt werden.
Um die Dinge einfacher zu machen, möchte ich wirklich meine eigene benutzerdefinierte "theme" grunt Aufgabe erstellen, die intern die anderen grunt contrib-Aufgaben verwenden würde ( clean
, copy
, compass
, usw.), um alle erforderlichen Aufgaben für ein bestimmtes Thema auszuführen.
Mit einer kleinen Menge an Konfigurationsdaten für ein Thema (hauptsächlich den Quellordner) hätte ich genügend Informationen, um die anderen Aufgaben aufzurufen (da die Quell- und Zieldateien des Themas sehr konventionell sind).
Ich kann anscheinend keine Möglichkeit finden, eine Aufgabe von meiner benutzerdefinierten Aufgabe aus aufzurufen, wo ich es tun und alle Konfigurationsoptionen, Dateien usw. programmgesteuert angeben kann.
Hat jemand eine Idee, wie ich das machen kann?
Danke, Ed
Ich kann anscheinend keine Möglichkeit finden, eine Aufgabe in meiner benutzerdefinierten Aufgabe aufzurufen Wo kann ich es tun und alle Konfigurationsoptionen, Dateien usw. angeben programmgesteuert.
Ich denke nicht, dass Sie eine Grunt-Multitask mit einer bestimmten Konfiguration ausführen können, da die Multitask-Konfiguration von den in der Task-Konfiguration angegebenen Zielen gelesen wird.
Eine Möglichkeit, dies zu tun, besteht darin, die Task-Konfiguration zu ändern, bevor Sie sie ausführen.
Hier ist ein sehr einfaches Beispiel:
%Vor%Ich hatte das gleiche Problem und löste es.
Denken Sie daran: Grunt ist alles JavaScript, das im Knoten ausgeführt wird, sodass Sie alles tun können, was JavaScript und Knoten unterstützen.
Meine Lösung funktioniert so:
Stellen Sie zuerst alle Dinge für grunt Ihrer Kern-App in eine separate JavaScript-Datei für zB "grunt-my-app-core.js".
In diesem Export zwei Funktionen, init(grunt)
und getConfig(grunt, options)
.
init(grunt)
dient zum Laden und Registrieren von Tasks. Könnte so sein:
getConfig(grunt, options)
erstellt und gibt das Konfigurationsobjekt zurück:
und dann kann die Gruntfile.js
in Ihrem Theme-Projekt sehr kurz sein und nicht alle Dinge Ihrer Kern-App benötigen. Es könnte so sein:
Wenn Sie jetzt etwas an Ihrer Kern-App ändern, erhalten alle Themen dies. Das einzige, was Sie manuell aktualisieren müssen, ist die devDependencies
in der package.json
-Datei.
Tags und Links javascript gruntjs node.js