gulp-uglify 有问题

Having problems with gulp-uglify

我在使用 gulp-uglify 缩小我的文件时遇到了一些严重的问题。

这是我的gulp文件。

var gulp       = require('gulp');
var gutil      = require('gulp-util');
var browserify = require('browserify');
var babelify   = require('babelify');
var source     = require('vinyl-source-stream');
var buffer     = require('vinyl-buffer');
var uglify     = require('gulp-uglify');
var size       = require('gulp-size');

gulp.task('scripts', function () {

  var bundler = browserify({
    entries: ['views/main.js'],
    debug: true,
  })
  .transform(babelify, { presets: ['react', 'es2015'] });

  bundler.bundle()
      .pipe(source('main.js'))
      .pipe(buffer())
      .pipe(uglify())
      .pipe(gulp.dest('./public/'));
});

gulp.task('default', ['scripts']);

使用gutil,我发现给出gulp-uglify 错误的行,非常混乱:

{ [Error: /Users/fzxt/Documents/Web/Chatr/main.js: Unexpected token: keyword (const)]
  message: '/Users/fzxt/Documents/Web/Chatr/main.js: Unexpected token: keyword (const)',
  fileName: '/Users/fzxt/Documents/Web/Chatr/main.js',
  lineNumber: 66598..

关键字 const 有问题,这很奇怪,因为我在将它交给 uglify 之前用 babelify 转换了捆绑器。我也放了预设。

谁能帮我解决这个问题?谢谢。

如果您使用的是 vanilla browserify,则需要这样做:

var gulp = require('gulp');
var browserify = require('browserify');
var babelify = require('babelify');
var transform = require('vinyl-transform');
var uglify = require('gulp-uglify');

gulp.task('browserify', function () {
  var browserified = transform(function(filename) {
    var b = browserify({
      entries: filename,
      debug: true,
      transform: [
        [babelify, {
          presets: ['react', 'es2015']
        }]
      ]
    });
    return b.bundle();
  });
  
  return gulp.src(['views/main.js'])
    .pipe(browserified)
    .pipe(uglify())
    .pipe(gulp.dest('./dist'));
});