2016-03-25 15 views
0

Gulp kullanıyorum ve bu dosyaya bir yazı yazmadan önce bir dizinin tüm içeriğini silmek/silmek istiyorum.Node.js akışları => Aktarımdan önce klasör içeriğini silin

Silme işlemini çalıştıran akışı okuma/dönüştürme/yazma işlemini gerçekleştiren akışa bağlamanın bir yolu var mı?

function transpileJSX() { 

    var d = domain.create(); 

    d.run(function() { 
     gulp.src('./public/static/app/js/views/**/*.js').pipe(react({harmony: true})) 
      .pipe(gulp.dest('./public/static/app/js/jsx')).on('end', function() { 
      d.emit('end'); 
      d.exit(); 
     }); 
    }); 

    return d; 


} 

function deleteJSX() { 
    return gulp.src('./public/static/app/js/jsx/**/*.js') 
     .pipe(clean({force: true})); 
} 


gulp.task('transpile-jsx', function() { 
    return transpileJSX().on('error', function (err) { 
     console.error(err); 
    }); 
}); 

gulp.task('delete-jsx', function (cb) { 
    return deleteJSX(); 
}); 

sorun bu işe görünmüyor olmasıdır:

Şu anda bu var

deleteJSX().pipe(transpileJSX()); 

transpileJSX operasyonu deleteJSX operasyonu başlamadan önce başlamak gibi görünüyor. Ve bu akışlar söz konusu olduğunda beklenebilir. Ama sanırım, tüm silme işleminin tamamlanmasını sağlayarak, tüm şeyin düzgün bir şekilde çalıştığından emin olmak isterim? Örneğin

, eğer bunu yaparsam:

gulp.task('some-task', ['delete-jsx','transpile-jsx'], function (done) { 

    someTask(done); 

}); 

günlükleri silme-JSX görev sona ermeden transpile-JSX görev başladığını göstermektedir yudum.

Birisi, dosyaya aktarmadan önce bir klasörü temizleme konusunda kullanılacak bir desene sahipse, bunu kopyalamak istiyorum!

cevap

1

Neredeyse oradasınız.

gulp.task('transpile-jsx', ['delete-jsx'], function() { 
    //... 
}); 

gulp.task('some-task', ['transpile-jsx'], function() { 
    //... 
}); 

Bu kez Gulp 4 isabet kolay olacaktır: yudum maksimum eşzamanlılık için görevler çalışan beri sadece, görev bağımlılıkları yeniden düzenlemek zorunda. Orada

gulp.task('some-task', gulp.series('delete-jsx', 'transpile-jsx', function() { 
    //... 
})); 
+0

teşekkürler gibi şeyler yazabileceksiniz, bu mantıklı! Gulp 4'ün ne zaman serbest bırakılacağını biliyor musun? –

+1

Henüz birtakım [son tarih] (https://github.com/gulpjs/gulp/milestones) yok, çünkü [bazı olağanüstü kırılma değişiklikleri] nedeniyle (https://github.com/gulpjs/gulp/issues/1486) Ancak, bunu denemek isterseniz [güncel geliştirme sürümünü yükleyebilirsiniz] (http://blog.reactandbethankful.com/posts/2015/05/01/how-to-install-gulp-4/). Ben onunla oynuyordum ve henüz herhangi bir problemle karşılaşmadım, YMMV. –