2016-01-04 21 views
8

Nel mio flusso di lavoro corrente ho bisogno di creare pacchetti di browserify, ma desidero anche concatenare librerie js non comuni all'inizio del file per esporre variabili globali ma ridurre anche il numero di richieste http e la dimensione dei file js. (Alcune di queste librerie potrebbero anche essere necessarie per altri pacchetti)Conservazione di sorgenti in caso di unione di flussi JS (per concatenare dipendenze lib con bundle browserify)

Attualmente ho un'attività di gulp che crea il bundle di browserify e concatra le librerie richieste all'inizio del file di output, tuttavia trovo che al punto di fondere i flussi, le mie memorie si stanno rompendo e in web inspector; la mappa risultante mostra solo il bundle di browserify pre-potenziato e non i singoli moduli js.

var gulp   = require("gulp"), 
buffer   = require('vinyl-buffer'), 
gulpif   = require("gulp-if"), 
sourcemaps  = require("gulp-sourcemaps"), 
merge    = require('merge-stream'), 
concat   = require('gulp-concat'), 
uglify   = require("gulp-uglify") 
livereload  = require("gulp-livereload"); 

// compile scripts 
gulp.task("scripts", function() { 
    "use strict"; 

    // Iterate over bundles 
    var tasks = config.browserifyBundles.map(function(item){ 

    // Use entry file for output file name 
    var outputName = item.mainfile.replace(/^.*[\\\/]/, ''); 
    var browserifyStream = browserify({ 
     entries: item.mainfile, 
     debug: env !== "production" 
    }).bundle() 
    .on("error", notify.onError()) 
    .pipe(source(outputName)) 
    .pipe(buffer()) 
    .pipe(gulpif(env !== "production", sourcemaps.init())) 
    .pipe(gulpif(env !== "production", sourcemaps.write())); 

    // Get files to concat stream from json array 
    var libStream = gulp.src(item.concat); 

    return merge(libStream, browserifyStream) 
     .pipe(gulpif(env !== "production", sourcemaps.init({loadMaps: true}))) 
     .pipe(concat(outputName)) 
     .pipe(uglify()) 
     .pipe(gulpif(env !== "production", sourcemaps.write())) 
     .pipe(gulp.dest(config.projectDir + "js/")) 
     .pipe(notify("updated")) 
     .pipe(livereload()); 
    }); 


    // create a merged stream 
    es.merge.apply(null, tasks); 
}); 

(notare che il mio compito legge anche una matrice JSON config per costruire diversi fasci, se più di uno è presente)

C'è un modo per preservare le sourcemaps dai flussi pre-uniti? le mappe di caricamento impostate su true non sembrano funzionare.

Inoltre, come controllo di integrità, il mio approccio sarebbe considerato ragionevole? Mi manca un modo incredibilmente più semplice per raggiungere il mio risultato desiderato?

+0

Si prega di consultare [ "domande dovrebbe includere‘tag’nei loro titoli?"] (Http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles), dove il consenso è "no, non dovrebbero"! –

+0

Scuse @AndreasNiedermair - grazie per la modifica – Gaffen

risposta

0

Accertarsi che la riga seguente sia all'inizio del tubo, in questo modo si devono conservare correttamente le code di approvvigionamento.

.pipe(gulpif(env !== "production", sourcemaps.init())) 
+0

@Gaffen hai risolto il problema? – jeanfrg

+0

Ho paura di essermi trasferito da un anno e 7 mesi fa! Quando avrò il tempo vedrò se posso controllare se funziona, ma grazie mille per la risposta. Se risulta funzionare ora ti farò sapere e accetterò la tua risposta :) – Gaffen

+0

Wow! Non si rendeva conto che era questa vecchia haha – jeanfrg

Problemi correlati