【问题标题】:How to get sourcemaps for gulp+babel+browserify+uglify如何获取 gulp+babel+browserify+uglify 的 sourcemaps
【发布时间】:2015-12-28 08:07:02
【问题描述】:

我正在使用 gulp 将 browserify+babelify 与 uglifyjs 捆绑在一起。 ○ 但是,从我的项目生成的源地图只给了我捆绑的版本,而不是捆绑的版本。

这是我的设置:

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 的构建,并且仍然将映射返回到我的 pre-babel 文件?

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

【问题讨论】:

  • 嗨,为什么最后是gutil.noop()
  • 问题状态为only give me the bundled version, not the bundled version。我假设您的意思是 only give me the bundled version 而不是 unbundled 版本。如果是这样,您可以进行编辑以更新问题。
  • 我的猜测是添加了 gutil.noop() 是为了让 gulp.dest() 完成另一个 gulp 任务等待。但我不认为 gulp 是这样工作的。

标签: gulp browserify babeljs uglifyjs


【解决方案1】:

首先你需要通过设置debug选项为true来设置browserify生成source maps,然后如果你想要pre babelify source maps你需要配置babelify生成source maps:

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

【讨论】:

  • 我这样做了,但我无法在 chrome 调试器中的某些行上放置断点。主要在不在函数范围内的行上。有什么建议吗?
  • 我发现将 { compress: false } 传递给 uglify() 可以修复 Chrome 中的一些奇怪的断点行为。
  • 在创建源映射时我根本不会运行uglify()
猜你喜欢
  • 2015-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多