JavaScript 压缩器输出换行而不是分号 - 基于 Windows

标签 javascript exception minify line-numbers

我们希望行号在客户端 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 大小的改变很小。

最佳答案

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

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

行长度的选择涉及到一种折衷:较短的行长度更适合诊断异常发生的位置,但当您减少行长度时,gzip 大小会略有增加。

关于JavaScript 压缩器输出换行而不是分号 - 基于 Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15353059/

相关文章:

javascript - 存储文本输入并显示在页面上

javascript - textContent 仅显示 Content 一段时间(使用 addEventListener)

javascript - MySQL 捆绑在 NPM 应用程序中

c# - Windows 窗体未处理异常对话框

字符串文字的 JavaScript 缩小?

javascript - 添加 OptimizeCssAssetsPlugin 时,Webpack 不会缩小 .js 文件(没有它也能工作)

javascript - CSS 缩小脚本遗漏了一些 CSS3 属性

javascript - 如何单击当我在文本框输入外部单击时隐藏的链接?

python - 为什么 math.pow 会导致 ValueError : math domain error?

exception - NoSuchMethodError HTableDescriptor.addFamily