2016-10-30 3 views
1

Gibt es eine Möglichkeit, einen Package-Schluck-Task innerhalb meiner Schluckaufgabe auszuführen? Hier ist meine Dateistruktur:Die Schluckaufgabe des Pakets innerhalb meiner Schluckaufgabe ausführen

Root 
| 
|-- Gulpfile.js (task: get-files) 
| 
|-- node_modules 
    | 
    |-- packageA 
      | 
      |-- gulpfile.js (task: compile-custom) 

ich die compile-custom Aufgabe von packageA aus meiner get-files Aufgabe in meinem eigenen gulpfile ausgeführt werden soll. Im Idealfall könnte ich auch einen Rückruf von der compile-custom Aufgabe erhalten, um zu wissen, wann es abgeschlossen ist.

Antwort

1

Ich würde davon abraten, eine Aufgabe aus einer anderen gulpfile wie Sie wollen, vor allem aus einem node_modules-Paket. Ein Grund, dies nicht tun zu wollen, liegt an der Tatsache, dass das Paket geändert/aktualisiert werden kann und dann Ihren Code deswegen brechen kann.

Vorzugsweise sollten Sie einfach die gewünschte gulpfile Aufgabe in Ihre gulpfile kopieren und in Ihr Projekt einbinden oder einfach eine neue Datei erstellen, in der Sie leicht unterscheiden können, dass sie etwas anderes ist als Ihre gulpfile und einfach aufrufen in Ihrem eigenen Golf, genau wie Sie es mit jedem anderen Paket und/oder JS tun würden. Mit einer dieser Optionen vergessen Sie nicht, die Abhängigkeiten in Ihre package.json Dateien zu installieren und dann npm install auszuführen.


Hinweis: Um einen Schluck Aufgabe aus einer großen Schluck Aufgabe laufen Sie

gulp.start('taskname')

verwenden Obwohl die folgend sollte nur bei vollständigem Bedarf verwendet werden. Darüber hinaus wird in der neueren Version von Gulp v4 (refer to this) veraltet. Der Weg, eine Aufgabe aufzurufen, besteht darin, einfach eine Funktion wie oben erwähnt zu erstellen und diese Funktion in Ihrer gulpfile aufzurufen.


Beispiel schluck Funktionsaufruf:

var someFile = require('./someFile.js'); 

gulp.task('my-custom-task', function() { 
    someFile.doSomething('foo', 'bar'); 
}); 

Wenn Ihre Funktion etwas asynchron tut, sollte es einen Rückruf am Ende nennen, so schlingen ist in der Lage zu wissen, wann es gemacht wird:

var someFile = require('./someFile.js'); 

gulp.task('my-custom-task', function (callback) { 
    someFile.doSomething('foo', 'bar', callback); 
}); 
+0

Ich kann die Sorge verstehen. Mein Ziel war es, dies der Einfachheit halber zu einer einzigen Schluckaufgabe zu machen. Mein Plan war, 'packageA' auszuführen, die eine Datei in' packageA' 'dist'-Verzeichnis ausgibt. Von dort greife ich diese Datei und lege sie in das 'js' -Verzeichnis meines Projekts, daher die Notwendigkeit für synchrone Aufrufe. –

+0

Wenn Sie die Anrufe synchronisieren möchten und wissen möchten, wann die letzte Aufgabe beendet ist, empfehle ich Ihnen, sich das [Run-Sequence Module] (https://www.npmjs.com/package/run-sequence) anzuschauen. Sie legen die Dinge einfach in die von Ihnen gewünschte Reihenfolge und sie werden in einer Reihenfolge ausgeführt, in der Sie, sobald Sie eine Aufgabe abgeschlossen haben, zur nächsten weitergehen. Was in Ihrem Fall scheint, was Sie wollen. – CriCri

+0

Danke! Ich werde eine Kombination dieser Lösung versuchen und zu Ihnen zurückkommen. –

Verwandte Themen