2016-01-04 8 views
8

私の現在のワークフローでは、browserifyバンドルを作成する必要がありますが、ファイルの先頭にnon-commonjs jsライブラリを連結して、また、HTTPリクエストの数とjsファイルのサイズを減らします。 (これらのライブラリのいくつかは他のバンドルでも必要かもしれません)JSストリームをマージする際のソースマップの保存(browserifyバンドルにlib依存関係を連結する)

私は現在、browserifyバンドルを作成し、必要なライブラリを出力ファイルの先頭に連結するgulpタスクを持っていますが、ストリームをマージする、私のソースマップが壊れている、そしてWebインスペクタで。結果として得られるマップは、個々のjsモジュールではなく、事前にuglifiedされたbrowserifyバンドルのみを表示します。

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

(つ以上が存在する場合、私のタスクはまた、いくつかのバンドルを構築するために設定JSON配列を読み込むことに注意してください)

私は事前にマージされたストリームからsourcemapsを保存することができます方法はありますか? loadmapsをtrueに設定しても動作していないようです。

また、健全性チェックとして、私のアプローチは合理的であると考えられますか?私は望みの結果を達成するためのすばらしく簡単な方法を見逃していますか?

+0

http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles([タグ "の質問には、すべき『』タイトルには?"]を参照してください)、コンセンサスは "いいえ、彼らはすべきではありません"! –

+0

お詫び申し上げます@AndreasNiedermair - 編集ありがとうございました – Gaffen

答えて

0

パイプの先頭に次の行があることを確認してください。これにより、ソースマップが正しく維持されます。

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

@Gaffenあなたはそれを修正することができましたか? – jeanfrg

+0

私は1年前と7ヶ月前からかなり動いたのですが、恐れています!私は時間を得るとき、私はそれが動作するかどうかを確認することができますが、非常に答えに感謝するかどうかを確認します。それが今働くことが判明すれば、私はあなたにあなたの答えを知らせて受け入れるでしょう:) – Gaffen

+0

うわー! didntはそれがこの古い笑だったことに気づいた – jeanfrg

関連する問題