Par*_*xis 21 javascript ecmascript-6 gulp gulp-uglify
我正在尝试使用压缩我的项目gulp-uglify,但是Unexpected token: punc ()每当遇到代码中的箭头函数时,gulp似乎都会抛出错误.有什么办法可以解决这个问题吗?谢谢.
// Function with callback to simulate the real code
function test(callback) {
if (typeof callback === "function") callback();
}
// Causes a crash
test(() => {
console.log("Test ran successfully!");
});
// Doesn't cause a crash
test(function () {
console.log("Test ran successfully!");
});
Run Code Online (Sandbox Code Playgroud)
var gulp = require("gulp");
var concat = require("gulp-concat");
var uglify = require("gulp-uglify");
gulp.task("scripts", function() {
gulp.src([
"./gulp-crash-test.js"
]).pipe(
concat("gulp-crash-test.min.js")
).pipe(
uglify().on('error', function(e){
console.log(e);
})
).pipe(
gulp.dest("./")
);
});
gulp.task("watch", function() {
gulp.watch("./gulp-crash-test.js", ["scripts"]);
});
gulp.task("default", ["watch", "scripts"]);
Run Code Online (Sandbox Code Playgroud)
小智 24
箭头功能是ES6功能.Babel(以及其他)旨在将ES6转换为ES5或更早版本,作为构建过程的一部分.幸运的是有Gulp和Grunt的Babel插件.在uglify之前运行Babel.
https://www.npmjs.com/package/gulp-babel
我希望这会引导你朝着正确的方向前进/某人可以展示一些代码.
sup*_*rui 23
ES6语法没有支持ugilify(minify)工具.你应该在babel编译后构建gulp任务(es6 - > es5)
1.安装包
npm install gulp-babel babel-preset-es2015
2.更改您的代码如下.
var gulp = require("gulp");
var concat = require("gulp-concat");
var uglify = require("gulp-uglify");
var babel = require('gulp-babel');
gulp.task("scripts", function() {
return gulp.src(["./gulp-crash-test.js"])
.pipe(babel({presets: ['es2015']}))
.pipe(concat("gulp-crash-test.minjs"))
.pipe(uglify().on('error', function(e){
console.log(e);
}))
.pipe(gulp.dest("./"))
});
Run Code Online (Sandbox Code Playgroud)
Gab*_*eim 11
您可以使用babel minify(以前的Babili)基于babel的库来缩小ES6代码而无需进行转换:
首先通过npm安装:
npm install --save-dev babel-preset-minify
Run Code Online (Sandbox Code Playgroud)
然后在你的gulp文件中:
var gulp = require('gulp')
var babel = require('gulp-babel')
gulp.task('default', () => {
return gulp.src('src/app.js')
.pipe(babel({presets: ['minify']}))
.pipe(gulp.dest('dist'))
})
Run Code Online (Sandbox Code Playgroud)
它使用babel作为解析器,但没有转换.
| 归档时间: |
|
| 查看次数: |
18609 次 |
| 最近记录: |