You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ES6语法时gulp-uglify在AngularJS项目中失效问题求助

解决gulp-uglify压缩AngularJS项目(含ES6箭头函数)失败的问题

这个坑我之前踩过!老版本的gulp-uglify只支持ES5语法,你代码里的箭头函数属于ES6特性,直接用它压缩肯定会报错。给你两个亲测有效的解决方案:

方案一:改用支持ES6的压缩插件gulp-uglify-es

这是最直接的办法,不需要转译ES6,直接用兼容ES6的uglify版本:

  1. 先安装依赖:
npm install gulp-uglify-es --save-dev
  1. 修改你的Gulp任务代码:
const gulp = require('gulp');
const concat = require('gulp-concat');
const rename = require('gulp-rename');
// 导入支持ES6的uglify版本
const uglifyES = require('gulp-uglify-es').default;

gulp.task('minify-scripts', function() { 
  return gulp.src(jsFiles) 
    .pipe(concat('scripts.js')) 
    .pipe(gulp.dest(jsDest)) 
    .pipe(rename('scripts.min.js')) 
    .pipe(uglifyES()) // 替换成这个方法
    .pipe(gulp.dest(jsDest)); 
});

方案二:用Babel转ES5后再压缩(适合需兼容老浏览器的场景)

如果你的项目需要兼容不支持ES6的老浏览器,推荐先把ES6代码转成ES5,再用原gulp-uglify压缩:

  1. 安装必要依赖:
npm install gulp-babel @babel/core @babel/preset-env --save-dev
  1. 修改Gulp任务,加入Babel转译步骤:
const gulp = require('gulp');
const concat = require('gulp-concat');
const rename = require('gulp-rename');
const uglify = require('gulp-uglify');
const babel = require('gulp-babel');

gulp.task('minify-scripts', function() { 
  return gulp.src(jsFiles) 
    .pipe(concat('scripts.js')) 
    // 新增Babel转译,把ES6转成ES5
    .pipe(babel({
      presets: ['@babel/preset-env']
    }))
    .pipe(gulp.dest(jsDest)) 
    .pipe(rename('scripts.min.js')) 
    .pipe(uglify()) 
    .pipe(gulp.dest(jsDest)); 
});

可选:自定义Babel转译目标

如果需要更精细的浏览器兼容配置,可以在项目根目录新建.babelrc文件:

{
  "presets": [
    ["@babel/preset-env", {
      "targets": {
        "browsers": ["last 2 versions", "ie >= 11"]
      }
    }]
  ]
}

内容的提问来源于stack exchange,提问作者Pyae Phyoe Shein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:38:42