2017-03-31 85 views
6

Webpack'in, saat modu oluşturma işlemimi hangi dosyanın tetiklediğini günlüğe kaydetmesini isterim.Web paketi, hangi modda izleme modunu başlattığını bildirebilir mi?

böyle watch-run derleyici olay kanca dinler bir eklenti yapılandırmış:

function() { 
    this.plugin("watch-run", function(watching, callback) { 
    // maybe something in `watching` will indicate the changed file? 
    // when I find out what it is, `console.log` it here 
    callback(); 
    }); 
} 

// Example output: "/Users/aaron/git/test/index.js" was changed, new build triggered 

Fakat değiştirilen dosyası bilgileri nerede olabilir bu hiç olup olmadığını, çözemiyorum.

Webpack belgeleri gerçekten bu alanda eksiktir. Compiler Event Hook sayfasında herhangi bir örnek (yalnızca bu örneklerin yakında açıklanacağını belirten bir ileti yoktur) ve old v1 documentation, watching//compiler nesnesinde bulunan özelliklerin/yöntemlerin ayrıntılandırılmasında çok daha iyi değildir.

Herhangi bir yardım veya yönlendirme çok takdir edilecektir.

cevap

9

Bu tür bilgiler, web paketi belgelerinde yer almaz ve derleyicide bulunan olası tüm seçenekleri dahil etmek zor olabilir. Ancak bunun, kaynak kodu okuyarak veya bir hata ayıklayıcısını alıp inceleyip, araştırıp mevcut seçenekleri keşfetmeniz gereken bir alan olduğunu söyleyebilirim. Ben ikinci yaptı ve değiştirilen dosyalar mevcut olduğunu bulundu:

watching.compiler.watchFileSystem.watcher.mtimes 

Bu, her tuş değiştirildi ve değer zaman damgası zaman değiştirildi olan bir dosyaya mutlak yoldur bir nesnedir . Konfigüre edilen anket aralığı içinde birden fazla değişiklik kaydedildiğinde, yeniden derlenmeyi tetikleyen birden fazla dosya değişikliğine sahip olmak mümkündür.

this.plugin("watch-run", (watching, done) => { 
    const changedTimes = watching.compiler.watchFileSystem.watcher.mtimes; 
    const changedFiles = Object.keys(changedTimes) 
    .map(file => `\n ${file}`) 
    .join(""); 
    if (changedFiles.length) { 
    console.log("New build triggered, files changed:", changedFiles); 
    } 
    done(); 
}); 

Buna bir örnek çıktı şöyledir::

New build triggered, files changed: 
    /path/to/app/src/components/item/Item.js 
    /path/to/app/src/App.js 

Not: Bu çıkış gelecektir

Aşağıdaki kod değiştirilmiş dosyaları (dosyaları da boş olabilir) yazdırır Son istatistikler basılmadan önce.

+1

Bu mükemmel, teşekkürler. –

+1

Bu bilgileri paylaştığınız için teşekkürler ... Kodunuz, kod kapsamı modülü tarafından oluşturulan bir stray.html dosyasının neden olduğu, projemde kesintisiz kesintisiz HMR yeniden oluşturmanın nedenini bulmamı sağladı. –