2016-04-07 33 views
2

Dosyalarda yapılan değişiklikleri izlemek için grunt-watch'ı kullanmak, ekleme/değiştirme işlemleri için mükemmeldir, çünkü değişiklik listesindeki görevi çağırırsa, görevin files (veya fileSrc) özelliği eklenmesini içerir. değiştirilen dosyalar.Grunt ile silinen dosyaların izlenmesi

Silinmiş dosyalar için böyle değil. Silinen dosyaları izlerseniz ve bir görevi çağırırsanız, silinen dosya görevin filesSrc özelliğinde veya files özelliğinin normalleştirilmiş kısmında görünmez. Kenara elle belli files elemanın orig özelliği normale dan

, fileSrc veya files normalleştirilmiş bölümde olmasını silinen dosyayı zorlamak için bir yol var? Değilse, orig'u normalize etmenin en iyi yolu nedir (tekerleği yeniden icat etmek istemiyorum)?

cevap

2

Muhtemelen eklentisi tasarımı ile dosyaları diziden silinen dosyaları damping, eklenti ancak yayarlar yok mi bir watchevent için size dinleyebilirsiniz: Ayrıca bir saat görev oluşturmanın yollarını var

grunt.initConfig({ 
    watch: { 
    scripts: { 
     files: ['**'], 
    }, 
    }, 
}); 
grunt.event.on('watch', function(action, filepath, target) { 
    if (target === 'scripts' && action === 'deleted') { 
    // your code goes here 
    } 
}); 

Gözlemci bir silme algıladığında belirli bir görevi yürüten belirli. Her iki yöntem de plugin's documentation'da listelenmiştir.

+0

Evet, "İhtiyaçları Derleme Gerekiyor" bölümünde açıklanan tekniği kullandım. 'Watch' olayındaki sorun, yalnızca bir küresel 'watch' dinleyicisi olabileceğidir ve aynı anda çalışan birden fazla iz hedefi varsa, belirli bir etkinliğin hangi hedeften geldiğini bilmenin bir yolu yoktur. – gzak

+0

Örneğin, jslint ile örneklerini alırsanız ve jslint (jslint2 olarak adlandır) gibi bir şey yapan başka bir izleme hedefi çalıştırmanız gerekiyorsa, ancak (ancak çakışan) ayrı bir dosya kümesinde, saat dinleyicisinin Ancak iki kümenin birleşimindeki herhangi bir dosya değişikliği için jslint ve jslint2'yi çalıştırmak için seçim (aksi takdirde hedeflerden birinde bazı dosyaları özleyebilir). Ancak bu, bazı dosyaların olmaması gereken jslint'ed (veya jslint2'ed) alabileceği anlamına gelir. – gzak

+0

Hedefi kontrol etmek için koşulunuzu değiştirin: 'if (target === 'jslint' && action === 'deleted')' – theaccordance