2015-06-11 14 views
11

Ho creato un'operazione per raggruppare i moduli con browserify e sto utilizzando watchify per controllare le modifiche. Qui è il mio compito sorso per watchify:Watchify non rileva sempre le modifiche apportate ai file javascript

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(); 
}); 

Se modifico di file js principali (./js/app.js), la modifica viene sempre rilevato. Ma quando modifico altri file richiesti dal file principale, la modifica viene rilevata all'incirca ogni volta (ma non sempre). Sto facendo qualcosa di sbagliato qui?

Here is the full Github repo così forse si ottiene l'idea completa di come avevo pianificato questo lavoro

+1

Ho lo stesso problema. non rileva sempre modifiche "piccole". Continuo a premere invio 3-5 volte per creare alcune nuove linee. Lo rileverà sempre e quando ricostruirà la mia app rimuoverò le linee. Lo so, è imbarazzante, ma funziona: D – marcel

+0

@marcel yeah faccio lo stesso per ora ma è davvero, davvero fastidioso – tuks

+0

Ho provato il tuo progetto GitHub - rilevamento delle modifiche a tutti i file javascript in app/js/.. sta funzionando bene sulla mia macchina. (Forse lo hai già risolto?) –

risposta

1

Ci sono due problemi con il codice di esempio.

Innanzitutto, watch:browserify deve effettuare una richiamata o restituire un flusso, oppure possono verificarsi condizioni di gara, come discusso here. Ad esempio, l'ultima riga nell'attività potrebbe essere return bundle();.

In secondo luogo, quando si usano watchify, le opzioni cache e packageCache deve essere passato a browserify(), come mostrato di seguito e specificati here.

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

Infine, assicurarsi che app.js in realtà dipende, da qualche parte nella sua catena di dipendenza, sugli altri file che si sta modificando.

0

Ho avuto lo stesso problema e avevo tutto configurato da @akarve impostato correttamente. Sono tornato a watchify: "^2.6.0" e il problema è stato risolto. Tuttavia il tempo di costruzione/rilevamento era un po 'più lento - circa mezzo secondo. Ancora, molto meglio che occasionalmente (spesso!) Non avendo le mie modifiche rilevate da watchify.

discussione correlati qui (anche il luogo dove ho trovato il commento su V2.6.0) - https://github.com/substack/watchify/issues/216#issuecomment-119285896

Problemi correlati