1

当客户端 JavaScript 发生异常时,我们希望行号有用。理想情况下,理解 ASI(自动分号插入)规则的解决方案,即具有语法意识而不是基于 RegExp/文本的解决方案。

我发现的最接近的是 UglifyJS2,分号选项设置为 false。[编辑:UglifyJS2 还需要将最大行长度选项设置为较低的值,并且可能未勾选序列选项,否则它仍会生成长行,例如 1000 个字符长]。

PS:我们的构建过程必须使用Windows(由于各种原因被锁定),并且我们的构建脚本已经依赖于Python和Java(JS的closurecompiler,CSS的yuicompressor,将图像嵌入CSS的cssembed)我真的不'不想添加另一个构建过程依赖项(Node、Ruby 或 Web 服务等),我强烈反对使用 RegExp 解决方案,因为我认为文本处理对于可靠的生产解决方案来说太脆弱了。

PPS:我不想依赖源图,因为它们要复杂得多(跨浏览器问题、内部和客户端支持问题、管理和查找正确源图的困难)。

PPPS:对行号有新要求的原因是我们开始使用https://github.com/getsentry/raven-js,如果异常的行号有用,它将是最有用的。我们的客户端代码是一个单页 Ajax/json 应用程序。理论上,使用换行符而不是分号会改变 gzip 的大小。

4

1 回答 1

0

UglifyJS2 是我发现在以下设置下工作正常的唯一解决方案:

  • 分号选项设置为 false
  • 最大行长度选项设置为合理的低值
  • 序列选项未勾选

行长的选择涉及一个折衷方案:较短的行长更适合诊断发生异常的位置,但 gzip 大小会随着您减少行长而增加少量。

于 2013-03-20T23:59:30.630 回答