我得到以下错误运行这个命令
gulp.task('minify', function () {
return gulp
.src('public/app/js/myapp.bundle.js')
.pipe(uglify())
.pipe(gulp.dest('public/app/js/myapp.bundle.min.js'));
});
GulpUglifyError:无法缩小JavaScript的原因:SyntaxError: Unexpected token: name (MenuItem) (line: 1628, col: 18, pos: 53569)
该位置的代码为
setters: [],
execute: function () {
class MenuItem { // <-- line 1628
怎么了?
UglifyJS目前不支持EcmaScript 6的类等结构。
你可能需要先通过一个转译器来运行你的JavaScript,或者找一个知道如何处理ES6代码的minifier。
2017-06-17
更新设计用于ES6的UglifyJS分支现在在npm上发布为uglify-es
。
2018-09-10
更新 terser
为新的uglify-es
, uglify-es
不再维护。
如果使用gulp, npmjs的gulp-uglify-es和npmjs的gulp-terser包都支持。
npm install gulp-terser --save-dev
const gulp = require('gulp');
const terser = require('gulp-terser');
function es(){
return gulp.src('./src/index.js')
.pipe(terser())
.pipe(gulp.dest('./build'))
}
gulp.task('default', es);
如果遇到这个问题,并且实际上有类似Babel的转译器步骤,请确保在.babelrc
文件中包含适当的Babel预设。否则,Babel将简单地保留您的代码。
。
{
"presets": ["es2015"]
}