2016-03-24 24 views
1

Projelerimi çalıştırmak/oluşturmak için node/gulp kullanıyorum. Bu projelerin karşısında gulpfiles'ım çok benzer görünüyor. Bir Java/Maven arka planından geldiğimden beri sth arıyordum. Bir ana gulpfile gibi temel görevlerden miras alınabilir (bu, maven'deki bir ana pom.xml ile kolayca mümkündür).Gulp'ta görev devralma, parent gulpfile.js

Her nasılsa, bu bir şey yapmaz mı, bunu yapan modüller var mı, yoksa bunu kendim mi çizmeliyim?

Başka bir şey yapmayan bir düğüm modülüne sahip olmaktan ve bağımlı bağımlılık dosyasından isteyebileceğimiz temel görevleri yerine getirmeyi düşünebilirim. Böyle bir yaklaşımla ilgili deneyimleriniz var mı?

BR Chris

cevap

3

sadece çocuk gulpfiles daki ana gulpfile içinde gulp nesneyi dışa ve sonra gerektirebilir:

proje/gulpfile.js:

var gulp = require('gulp'); 

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

module.exports = gulp; 

project/subproject/gulpfile.js:

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

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

project/subproject dizininden subtask Çalıştırma:

> 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 

DÜZENLEME: üst gulpfile aynı paketin bir parçası değilse yukarıda çalışmaz (ör my-app), ancak bağımlı olduğunuz başka bir paketten (örneğin, my-common-tasks). Bunun nedeni, modülün Node.js dosyasında yüklenmesi yolunda, iki örnekle gulp: my-common-tasks'dan biri ve my-app'dan biri ile sonuçlanır. Görevleriniz örneğinde my-common-tasks olarak tanımlanacak, ancak gulp CLI örnekte my-app arasındaki görevleri arayacaktır.

Bunun yerine my-app den my-common-tasks için gulp örneği geçmek zorunda:

benim küçük ortak görevler/ 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

Evet, düşündüğüm buydu. Ama projelerim fiziksel olarak ayrıldı. Bu yüzden 'ebeveyn' gulpfile'ı basit bir düğüm modülüne paketlemeyi, alt-projelerde bağımlılık olarak kullanmamayı ve node_modules'den gelen ebeveynlik görevlerini yüklemeyi düşünüyordum. Bu size sağlam bir çözüm gibi geliyor mu? – cschuff

+0

Ayrıca, verileri düğüm ortam değişkenlerinden de yükleyebilirsiniz. Aynı zamanda kolay olurdu. –

+0

@cschuff Düzenlememe bakın. –