什么是最好的 JavaScript 压缩器?我正在寻找一种工具:
- 易于使用
- 具有高压缩率
- 产生可靠的最终结果(不会弄乱代码)
什么是最好的 JavaScript 压缩器?我正在寻找一种工具:
我最近发布了UglifyJS,这是一个用 JavaScript 编写的 JavaScript 压缩器(在 NodeJS Node.js平台上运行,但它可以很容易地修改为在任何 JavaScript 引擎上运行,因为它不需要任何Node.js
内部结构)。它比YUI Compressor和Google Closure快得多,在我测试过的所有脚本上它的压缩效果都比YUI好,而且比 Closure 更安全(知道处理“eval”或“with”)。
除了去除空格之外,UglifyJS 还执行以下操作:
foo["bar"]
为foo.bar
PS:哦,它也可以“美化”。;-)
几年后重新审视这个问题,UglifyJS似乎是目前最好的选择。
如下所述,它在 NodeJS 平台上运行,但可以轻松修改以在任何 JavaScript 引擎上运行。
---下面的旧答案---
Google 发布了Closure Compiler,它似乎生成了迄今为止所见的最小文件here和here
在此之前,各种选项如下
基本上Packer在初始压缩方面做得更好,但是如果您要在通过网络发送之前对文件进行 gzip(您应该这样做),YUI Compressor会获得最小的最终大小。
顺便说一句,测试是在 jQuery 代码上完成的。
@ daniel james在评论中提到了compressorrater显示Packer 在最佳压缩中领先,所以我猜是ymmv
YUI Compressor是必经之路。它具有很高的压缩率,经过充分测试并在许多顶级站点中使用,而且,我个人推荐。
我已经将它用于我的项目,没有一个 JavaScript 错误或打嗝。它有很好的文档。
我从未使用过它的 CSS 压缩功能,但它们也存在。CSS 压缩也同样有效。
注意:虽然 Dean Edwards 的 / packer / 实现了比 YUI Compressor 更好的压缩率,但我在使用它时遇到了一些 JavaScript 错误。
我使用了 Dojo 项目中的ShrinkSafe——它很特别,因为它实际上使用了一个 JavaScript 解释器 ( Rhino ) 来处理在代码中查找符号并理解它们的范围等。这有助于确保代码在出现时能够正常工作另一方面,与许多使用正则表达式执行相同操作的压缩工具相反(这并不可靠)。
我实际上在我当前的 Visual Studio 解决方案的Web 部署项目中有一个 MSBuild 任务,该任务运行一个脚本,该脚本反过来在我们部署之前通过 ShrinkSafe 运行解决方案的所有 JS 文件,并且运行良好。
编辑:顺便说一句,“最佳”是有争议的,因为“最佳”的标准将根据项目的需要而有所不同。就我个人而言,我认为 ShrinkSafe 是一个很好的平衡;对于一些认为最小尺寸 == 最好的人来说,这将是不够的。
编辑:值得注意的是,YUI 压缩器也使用 Rhino。
尝试JSMin,获得 C#、Java、C 和其他端口,也很容易获得。