当我运行 gulp 时,出现以下错误:
[12:54:14] { [GulpUglifyError: unable to minify JavaScript]
cause:
{ [SyntaxError: Unexpected token: operator (>)]
message: 'Unexpected token: operator (>)',
filename: 'bundle.js',
line: 3284,
col: 46,
pos: 126739 },
plugin: 'gulp-uglify',
fileName: 'C:\\servers\\vagrant\\workspace\\awesome\\web\\tool\\bundle.js',
showStack: false }
有问题的行包含一个箭头函数:
let zeroCount = numberArray.filter(v => v === 0).length
我知道我可以将其替换为以下内容以通过放弃 ES6 语法来补救缩小错误:
let zeroCount = numberArray.filter(function(v) {return v === 0;}).length
如何通过 gulp 缩小包含 ES6 功能的代码?
原文由 Don 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以这样利用 gulp-babel …
这将在管道的早期转换您的 es6,并在您缩小时生成广泛支持的“普通”javascript。
可能需要注意- 正如评论中指出的那样 - 核心 babel 编译器作为此插件中的 对等依赖 项提供。如果核心库没有通过您的存储库中的另一个 dep 被拉下,请确保它已安装在您的端。
查看
gulp-babel
中的 对等依赖--- 作者正在指定 @babel/core (7.x)。不过,稍旧的 babel-core (6.x) 也可以使用。我的猜测是作者(两个项目的作者相同)正在重组他们的模块命名。无论哪种方式,两个 npm 安装端点都指向 https://github.com/babel/babel/tree/master/packages/babel-core ,因此您可以使用以下任一方式……或者