2016-03-24 15 views
1

Ich benutze Node/Schluck, um meine Projekte laufen/bauen. Über diese Projekte hinweg sehen meine gulpfiles sehr ähnlich aus. Da ich aus einem Java/Maven-Hintergrund komme, habe ich nach etw. Gesucht. wie eine übergeordnete gulpfile könnte man grundlegende Aufgaben von erben (dies ist einfach mit einem Elternteil pom.xml in maven möglich).Task Vererbung in Schluck, Eltern gulpfile.js

Ist das irgendwie in Schluck eingebaut, gibt es Module, die das machen oder muss ich das selbst herausfinden?

Ich könnte mir vorstellen, ein Knotenmodul zu haben, das nichts anderes tut als grundlegende Schluckaufgaben, die man von seiner abhängigen Schluckdatei verlangen kann. Irgendwelche Erfahrungen mit einem solchen Ansatz?

BR Chris

Antwort

3

könnten Sie exportieren nur die gulp Objekt in Ihrer Mutter gulpfile und es dann in den Kinder gulpfiles erfordern:

Projekt/gulpfile.js:

var gulp = require('gulp'); 

gulp.task('commontask', function() { }); 

module.exports = gulp; 

Projekt/Teilprojekt/gulpfile.js:

var gulp = require('../gulpfile.js'); 

gulp.task('subtask', [ 'commontask' ], function() { }); 

Lauf subtask aus dem project/subproject Verzeichnis:

> gulp subtask 
[12:38:05] Using gulpfile ~/project/subproject/gulpfile.js 
[12:38:05] Starting 'commontask'... 
[12:38:05] Finished 'commontask' after 50 μs 
[12:38:05] Starting 'subtask'... 
[12:38:05] Finished 'subtask' after 20 μs 

EDIT: Die oben funktioniert nicht, wenn die Eltern gulpfile nicht Teil des gleichen Pakets (z my-app), sondern eher von einem anderen Paket, auf das Sie angewiesen sind (z. B. my-common-tasks). Der Grund dafür ist, dass die Art, wie das Modul in Node.js geladen wird, am Ende zwei Instanzen von gulp ergibt: eine in my-common-tasks und eine in my-app. Ihre Aufgaben werden in der Instanz von my-common-tasks definiert, aber die gulp CLI sucht nach den Aufgaben in der Instanz von my-app.

Stattdessen müssen Sie die gulp Instanz von my-app zu my-common-tasks passieren:

my-Common-Aufgaben/gulpfile.js:

module.exports = function(gulp) { 
    gulp.task('common-task', function() { }); 
}; 

my-app/gulpfile.js:

var gulp = require('gulp'); 
require('my-common-tasks')(gulp); 

gulp.task('sub-task', [ 'common-task' ], function() { }); 
+0

Ja, daran dachte ich. Aber meine Projekte sind physisch getrennt. Deshalb habe ich mir überlegt, die 'Eltern' gulpfile in ein einfaches Knotenmodul zu packen, es als Abhängigkeit in den Teilprojekten zu verwenden und die Elterngulpaufgaben von node_modules zu laden. Klingt das wie eine solide Lösung für Sie? – cschuff

+0

Sie können die Daten auch aus Knotenumgebungsvariablen laden. Es wäre auch einfach. –

+0

@cschuff Siehe meine Bearbeitung. –

Verwandte Themen