如何获取gulp+;巴别塔&x2B;browserify&x2B;丑陋的

如何获取gulp+;巴别塔&x2B;browserify&x2B;丑陋的,gulp,browserify,babeljs,uglifyjs,Gulp,Browserify,Babeljs,Uglifyjs,我正在使用gulp将browserify+babelify与uglifyjs捆绑在一起。O 但是,从我的项目生成的sourcemaps只提供捆绑版本,而不是捆绑版本 以下是我的设置: var gulp = require('gulp'), source = require('vinyl-source-stream'), browserify = require('browserify'), gutil = require('gulp-util

我正在使用gulp将browserify+babelify与uglifyjs捆绑在一起。O 但是,从我的项目生成的sourcemaps只提供捆绑版本,而不是捆绑版本

以下是我的设置:

var gulp       = require('gulp'),
    source     = require('vinyl-source-stream'),
    browserify = require('browserify'),
    gutil      = require('gulp-util'),
    buffer     = require('vinyl-buffer'),
    sourcemaps = require('gulp-sourcemaps'),
    uglify     = require('gulp-uglify'),
    file       = 'index.js';

gulp.task('build', function(){
    return browserify({
        entries: [file],
        transform: ["babelify"]
      })
    .bundle()
    .pipe(source(file))
    .pipe(buffer())
    .pipe(sourcemaps.init({loadMaps: true}))
    .pipe(uglify())
    .pipe(sourcemaps.write('./'))
    .pipe(gulp.dest('./public/js'))
    .pipe(gutil.noop())
})
有没有一种方法可以让我创建一个绑定babel=>browserify=>uglify的构建,并且仍然将地图返回到我的babel之前的文件中


我也不介意不使用gulp(实际上我更喜欢grunt,但这种设置在过去对我有用)。

首先,您需要将“调试”选项设置为true,将browserify设置为生成源地图,然后如果您想要预babelify源地图,则需要将babelify配置为生成源地图:

   var gulp       = require('gulp'),
    source     = require('vinyl-source-stream'),
    browserify = require('browserify'),
    gutil      = require('gulp-util'),
    buffer     = require('vinyl-buffer'),
    sourcemaps = require('gulp-sourcemaps'),
    uglify     = require('gulp-uglify'),
    babelify   = require('babelify')
    file       = 'index.js';

gulp.task('build', function(){
    return browserify(file,{debug:true}).transform(babelify, {presets: ["es2015", "react"],sourceMaps:true})
    .bundle()
    .pipe(source(file))
    .pipe(buffer())
    .pipe(sourcemaps.init({loadMaps: true}))
    .pipe(uglify())
    .pipe(sourcemaps.write('./'))
    .pipe(gulp.dest('./build/js'))
    .pipe(gutil.noop())
})

您好,为什么最后是一个
gutil.noop()
?问题是
只给我捆绑版本,而不是捆绑版本
。我想你的意思是只给我捆绑版,而不是非捆绑版。如果是,您可以进行编辑以更新问题。我猜添加
gutil.noop()
是为了让另一个gulp任务等待
gulp.dest()
完成。但我不认为gulp是这样工作的。我这样做了,但我不能在chrome调试器的某些行中设置断点。主要在函数中未限定范围的行上。有什么建议吗?我发现将
{compress:false}
传递到
uglify()
可以修复Chrome中的一些奇怪的断点行为。在创建源映射时,我根本不会运行
uglify()