2015-06-11 17 views
11

Göz atma modülleri tarayıcı ile paketlemek için bir yontma görev oluşturdum ve değişiklikleri izlemek için izleme özelliğini kullanıyorum.Watchify, her zaman javascript dosyalarındaki değişiklikleri algılamıyor

gulp.task('watch:browserify', function() { 
    var opts = assign({}, watchify.args, { 
     entries: ['./js/app.js'], 
     debug: true, 
     basedir: './app/', 
     paths: ['./lib'] 
    }); 

    var b = watchify(browserify(opts)); 

    b.on('update', function() { 
     bundle(); 
    }); 

    function bundle() { 
     gutil.log(gutil.colors.blue("Starting Browserify...")); 
     var time = Date.now(); 
     return b.bundle() 
      .on('error', gutil.log.bind(gutil, gutil.colors.red('Browserify Error'))) 
      .pipe(source('bundle.js')) 
      .pipe(buffer()) 
      .pipe(sourcemaps.init({loadMaps: true})) 
      .pipe(sourcemaps.write('.')) 
      .pipe(gulp.dest('app')) 
      .on('end', function() { 
       var duration = Date.now() - time; 
       gutil.log(gutil.colors.blue('Finished Browserify') + " (%dms)", duration); 
      }) 
    } 

    bundle(); 
}); 

ana js dosyası (./js/app.js) düzenleyebilir, değişiklik her zaman tespit edilir: Burada watchify benim yudum görevdir. Ancak, ana dosyanın gerektirdiği bazı dosyaları düzenlediğimde, değişiklik her seferinde algılanır (ancak her zaman değil). Burada yanlış bir şey mi yapıyorum? Bu e-postanın kod örneği ile iki sorunu vardır

+1

i aynı sorun var - burada

İlgili tartışma (aynı zamanda ben v2.6.0 hakkında yorum bulunamadı yerde). her zaman "küçük" değişiklikleri algılamaz. Hala yeni satırlar oluşturmak için 3-5 kez giriyorum. Her zaman onu algılayacak ve uygulamamı yeniden kurduğunda satırları kaldırıyorum. Biliyorum, bu garip ama işe yarıyor: D – marcel

+0

@marcel evet Şimdilik aynısını yapıyorum ama gerçekten çok sinir bozucu. – tuks

+0

GitHub projenizi denedim - uygulamadaki tüm javascript dosyalarındaki değişikliklerin algılanması/js/.. Makinemde iyi çalışıyor. (Belki şu an tamir ettin mi?) –

cevap

1

çalışmayı planlanan nasıl

Here is the full Github repo belki size tam bir fikir edinmek. herehere İlk olarak, watch:browserify ya bir geri arama yapmalı ya da bir akışa dönmeli ya da tartışılan here gibi yarış koşulları oluşabilir. Yani, örneğin, görevinizdeki son satır return bundle(); olabilir. watchify kullanımına ilişkin aşağıda ve here belirtilen

İkincisi, cache ve packageCache seçenekleri browserify() aktarılması gerekir.

var b = browserify({ cache: {}, packageCache: {} }); 

Son olarak, aslında app.js Düzenlediğiniz diğer dosyalar üzerinde kendi bağımlılık zincirinin herhangi bir yerindeki, bağlı olduğundan emin olun.