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() { });
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
Sie können die Daten auch aus Knotenumgebungsvariablen laden. Es wäre auch einfach. –
@cschuff Siehe meine Bearbeitung. –