最好的JavaScript压缩器

什么是最好的JavaScript压缩机可用? 我正在寻找一个工具:

  • 很容易使用
  • 具有很高的压缩率
  • 产生可靠的最终结果(不会搞乱代码)

我最近发布了一个用JavaScript编写的JavaScript压缩器UglifyJS (运行在NodeJS Node.js平台上,但可以很容易地修改为在任何JavaScript引擎上运行,因为它不需要任何Node.js内部)。 它比YUI Compressor和Google Closure都快很多,在我testing过的所有脚本上压缩得比YUI好,而且比Closure(知道处理“eval”或“with”)更安全。

除了空格删除之外,UglifyJS还执行以下操作:

  • 更改本地variables名称(通常为单个字符)
  • 连接var声明
  • 避免插入任何不需要的括号,parens和分号
  • 优化IF(在检测到不需要时除去“else”,在可能的情况下将IF转换为&&,||或?/:运算符等)。
  • 在可能的情况下将foo["bar"]转换为foo.bar
  • 在可能的情况下,从对象字面值的键中删除引号
  • 当这导致更小的代码(1 + 3 * 4 ==> 13)

PS:哦,它也可以“美化”。 😉

几年后重新审视这个问题, UglifyJS似乎是目前最好的select。

如下所述,它运行在NodeJS平台上,但可以很容易地修改为在任何JavaScript引擎上运行。

—下面的老答案—

Google发布了Closure Compiler ,它似乎是在这里和这里看到的最小的文件

在此之前的各种选项如下

基本上Packer在初始压缩方面做得比较好,但是如果你要在发送文件之前(你应该这样做)来压缩文件, YUI Compressor会获得最小的最终大小。

testing是在jQuery代码btw上完成的。

  • 原始jQuery库62,885字节,gzip后19,758字节
  • jQuery与JSMin 36,391字节,gzip后11,541字节缩小
  • jQuery使用Packer 21,557字节缩小,在gzip之后11,119字节
  • jQuery使用YUI Compressor缩小了31,822字节,gzip后是10,818字节

@ 丹尼尔·詹姆斯在评论压缩器中提到了Packer以最佳压缩率领先图表,所以我猜ymmv

YUI压缩机是要走的路。 它具有很高的压缩率,经过很好的testing,并在众多顶级网站中被使用,而且,我个人也是这样推荐的。

我已经将它用于我的项目,没有一个JavaScript错误或呃逆。 它有很好的文档。

我从来没有使用它的CSS压缩function,但它们也存在。 CSS压缩也同样适用。

注意:尽pipeDean Edwards的/ packer /比YUI Compressor实现了更好的压缩率,但是在使用它时遇到了一些JavaScript错误。

我使用Dojo项目中的ShrinkSafe – 这是非常特殊的,因为它实际上使用JavaScript解释器( Rhino )来处理在代码中查找符号并理解其范围等,这有助于确保代码在出现另一端,而不是使用正则expression式来做很多压缩工具(这是不可靠的)。

实际上,在我当前的Visual Studio解决scheme的Web部署项目中,我有一个MSBuild任务,该任务运行一个脚本,该脚本在部署之前通过ShrinkSafe运行所有解决scheme的JS文件,并且工作得很好。

编辑:顺便说一句,“最好的”是开放的辩论,因为“最好”的标准将根据项目的需要而有所不同。 我个人认为ShrinkSafe是一个很好的平衡, 对于一些认为最小尺寸==的人来说,这是不够的。

编辑:值得注意的是,YUI压缩机也使用犀牛。

尝试JSMin ,得到C#,Java,C和其他端口,也随时可用。

如果您使用Packer,那么只需远离“缩小variables”选项并对结果代码进行gzip即可。 base62选项仅适用于服务器无法发送gzip文件的情况。 带有“缩小variables”的包装器能够更好地压缩YUI,但是如果你在某处跳过了分号,可能会引入错误。

base62基本上是一个穷人的gzip,这就是为什么gzip base62编码给你更大的文件比gzipping收缩var-ed代码。

JSMin是另一个。

在寻找银弹时,发现了这个问题。 对于Ruby on Rails http://github.com/sstephenson/sprockets

这是一个HttpHandler 的源代码 ,这可能会帮助你

这是一个YUI压缩器脚本( Byuic ),它可以find所有的js和css,并压缩/(可选)混淆它们。 很高兴融入到构build过程中。

bananascript.com曾经给我最好的结果。

KJScompress

http://opensource.seznam.cz/KJScompress/index.html

Kjscompress / csskompress由两个应用程序(kjscompress一个csscompress)组成,以从包含JavaScript和CSS的文件中删除不重要的空格和注释。 两者都是GNU / Linux操作系统的命令行应用程序。

Js粉碎是一个很好的压缩机使用后,你已经缩小。

我使用jscompressor.com作为一个Chrome应用程序。