最好的 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 引擎上运行。
---下面的旧答案---
谷歌发布了Closure Compiler,它似乎生成了迄今为止看到的最小文件here和here
在此之前,各种选项如下
基本上Packer在初始压缩方面做得更好,但是如果您要在通过网络发送之前对文件进行 gzip 压缩(您应该这样做),YUI Compressor会获得最小的最终大小。
顺便说一句,测试是在 jQuery 代码上完成的。
@daniel james在评论compressrater中提到,这表明Packer 在最佳压缩方面领先图表,所以我猜是ymmv
我使用Dojo 项目中的ShrinkSafe - 它非常特别,因为它实际上使用 JavaScript 解释器 ( Rhino ) 来处理在代码中查找符号并理解它们的范围等,这有助于确保代码在出现时能够正常工作另一方面,与许多使用正则表达式来做同样事情的压缩工具相反(这不那么可靠)。
实际上,我当前的 Visual Studio 解决方案中的Web 部署项目中有一个 MSBuild 任务,该任务运行一个脚本,该脚本在我们部署之前通过 ShrinkSafe 运行解决方案的所有 JS 文件,它运行良好。
编辑:顺便说一句,“最佳”是有争议的,因为“最佳”的标准将根据项目的需要而有所不同。就个人而言,我认为 ShrinkSafe 是一个很好的平衡点;对于一些认为最小尺寸 == 最好的人来说,这将是不够的。
编辑:值得注意的是,YUI 压缩器也使用了 Rhino。
尝试JSMin,获得 C#、Java、C 和其他端口并且也随时可用。
如果您使用 Packer,只需选择“缩小变量”选项并 gzip 生成的代码。base62 选项仅适用于您的服务器无法发送 gzip 压缩文件的情况。带有“shrink vars”的 Packer 可以更好地压缩 YUI,但如果您在某处跳过了分号,则可能会引入错误。
base62 基本上是一个穷人的 gzip,这就是为什么 gzip 压缩 base62-ed 代码比 gziping shrink-var-ed 代码提供更大的文件。
JSMin是另一个。
在搜索银弹中,发现了这个问题。对于 Ruby on Rails http://github.com/sstephenson/sprockets
这是执行此操作的 HttpHandler 的源代码,也许它会对您有所帮助
bananascript.com曾经给我最好的结果。
KJS压缩
http://opensource.seznam.cz/KJScompress/index.html
Kjscompress/csskompress 包含两个应用程序(kjscompress 和 csscompress),用于从包含 JavaScript 和 CSS 的文件中删除不重要的空格和注释。两者都是 GNU/Linux 操作系统的命令行应用程序。
Js Crush是一个很好的压缩器,可以在您缩小后使用。