2015-02-06 7 views
9

Tutti gli esempi che ho visto usando browserify e gulp presuppongono che tu voglia solo browserizzare un file. Questo di solito non è il caso.Usa la corrispondenza globale, quando passi i file a browserify in gulp

Mi sono imbattuto in un esempio che utilizzava trasformazioni in vinile, ma non riesco a farlo funzionare correttamente. Ecco la (caffè-script) Codice:

# Browserify JS 

gulp.task 'browserify', [], -> 

    # Create the transform 
    br = transform (f) -> 
     return browserify(f).bundle() 

    # Run browserify 
    gulp.src(['./public/js/**/*.js']) 
     .pipe(br) 
     .pipe(gulp.dest('.')) 

ma ottengo il seguente errore:

[10:50:55] Starting 'browserify'... 

events.js:72 
     throw er; // Unhandled 'error' event 
      ^
Error: write after end 
+1

Di solito si utilizza un file come punto di ingresso, quindi browserify crea il grafico delle dipendenze e aggiunge tutti i file necessari. Avete un'intera directory di punti di ingresso per browserizzare? – Ben

+0

Sì, ho più punti di accesso per browserify – mrwooster

+0

considerare l'uso di 'require-globify' – chatoo

risposta

15

Il modo più semplice sarebbe quella di utilizzare glob direttamente:

var glob = require('glob'); 

gulp.task('browserify', function() { 
    var files = glob.sync('./public/js/**/*.js'); 
    return browserify({entries: files}) 
    .bundle() 
    .pipe(gulp.dest('.')); 
}); 
+0

Così semplice, non posso credere che mi ci sia voluto così tanto tempo per trovarlo! Grazie – mrwooster

+3

sembra che passare un array a glob.sync non sia più valido, ho provato ma ho avuto '' 'Type Error: glob pattern string required''. Passare una corda ha funzionato bene. Grazie per la risposta, a proposito! – bencrinkle

+0

usa 'glob-array' se vuoi passare un array –