当客户端 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 的大小。