使用Babel.js和concat和gulp生成的源地图是不正确的

我使用gulp将Babel 6转换成JS,然后把所有的文件(没有任何uglify,只join文件)连接起来。 然而,为了让我debugging应用程序,我需要正确的源地图,特别是从Babel转换的代码。 不幸的是,源代码地图从来不是正确的,因为像浏览器上的断点(例如Chrome或Firefox)与真实代码不匹配。

我在gulp上使用下面的代码:

return gulp.src( [].concat( FOLDERS.SOURCE.LIBS, FOLDERS.SOURCE.MODULES, FOLDERS.SOURCE.APP ) , {base: __dirname}) .pipe( plumber() ) .pipe( sourcemaps.init({loadMaps: true}) ) .pipe( gulpif ( notLib, babel( { presets: [ 'es2015', 'stage-3' ], sourceMaps: "both" } ) ) ) .pipe( replace("'use strict';", "")) .pipe( concat( FOLDERS.TARGET.DEVELOPMENT, { newLine: ';' } ) ) .pipe( sourcemaps.write( './', { //addComment: true, sourceMappingURL: function (file){ return path.basename(file.relative) + '.map?t=' + new Date().getTime(); } })) .pipe( gulp.dest( FOLDERS.TARGET.DEV ) ); 

FOLDERS.SOURCE的每个元素都是js文件path的数组。 notLib是一个简单的函数,它将确保外部库不会在babel下传递(在这种情况下会导致一些错误)。

有人能帮我理解什么是错的吗? 即使如果我评论concat代码,生成多个文件,并在页面上引用它们,一些剧照的源映射也是不正确的。