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?
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"! –
Scuse @AndreasNiedermair - grazie per la modifica – Gaffen