2015-08-31 26 views
5

böyle repl ile benim modül test ediyorum: Ben değiştirip kaydettiğinizde yükle modülleri

repl.start({ 
    input: process.stdin, 
    output: process.stdout 
}) 
    .context.MyModule = MyModule; 

otomatik modülü yeniden bir yolu var mı, çıkmak zorunda kalmadan ve Tekrar mı koşalım?

cevap

1

chokidar modülünü kullanabilir ve zorla yeniden yükleyebilirsiniz (modülde çalışma zamanı içeriğini kaybedersiniz, ancak otomatik olarak yeniden yüklenmelidir). Bu işe yaramazsa

var ctx = repl.start({ 
    input: process.stdin, 
    output: process.stdout 
}) 
    .context; 

ctx.MyModule = require('./mymodule'); 

chokidar.watch('.', {ignored: /[\/\\]\./}).on('all', function(event, path) { 
    delete require.cache['./mymodule']; 
    ctx.MyModule = require('./mymodule'); 
}); 

, ben biraz oynamak ve çalışan bir çözüm elde etmek mutluyum.


düzenleme: o temiz çöp-toplamaz yaparsa (herhangi bir açık kolları/dinleyici vardır), bu kadar yükler her zaman sızdırıyor. Her şeyi zarif bir şekilde durdurabilmek için MyModule'a 'clean-exit' işlevi eklemeniz ve ardından onu saat işleyicisine çağırmanız gerekebilir.