So erstellen Sie eine Grunt-Aufgabe, die auf andere Grunt-Aufgaben verweist

8

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

    
emcpadden 27.08.2013, 03:07
quelle

4 Antworten

1
%Vor%     
francesca 15.09.2015, 12:57
quelle
7
  

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%     
badsyntax 27.08.2013 09:45
quelle
5

So einfach ist das:

%Vor%     
Julien Bérubé 01.04.2014 18:30
quelle
1

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) .

%Vor%

init(grunt) dient zum Laden und Registrieren von Tasks. Könnte so sein:

%Vor%

getConfig(grunt, options) erstellt und gibt das Konfigurationsobjekt zurück:

%Vor%

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:

%Vor%

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.

    
TLindig 14.03.2014 15:21
quelle

Tags und Links