论坛首页 编程语言技术论坛

PackR--ruby下的JavaScript压缩工具

浏览 1392 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (2)
作者 正文
   发表时间:2009-11-16   最后修改:2009-11-16

PackR是一个ruby版的JavaScript压缩工具。


它有如下几个特性:
* 自动去除空格和注释等
* 支持变量名压缩
* 支持private标识符的压缩和模糊处理
* 支持Base-62编码

 

安装PackR很简单,执行以下命令即可:

gem install packr

 

使用PackR前必须在ruby应用中加上以下这句:

require 'packr'

 

接下来举几个简单的例子:

code = File.read('public/javascripts/menu.js')
compressed = Packr.pack(code)
File.open('public/javascripts/menu-min.js', 'wb') { |f| f.write(compressed) }

 

code = File.read('public/javascripts/menu.js')
compressed = Packr.pack(code, :shrink_vars => true, :base62 => true)
File.open('public/javascripts/menu-min.js', 'wb') { |f| f.write(compressed) }

 

code = File.read('public/javascripts/menu.js')
compressed = Packr.pack(code, :shrink_vars => true, :protect => %w[$super self])
File.open('public/javascripts/menu-min.js', 'wb') { |f| f.write(compressed) }

 

code = File.read('public/javascripts/menu.js')
compressed = Packr.pack(code, :private => true)
File.open('public/javascripts/menu-min.js', 'wb') { |f| f.write(compressed) }

 

以下是对一些选项的简要说明:
* :shrink_vars -- 设置成true时表示启用变量名压缩
* :private -- 设置成true时表示启用private标识符的压缩和模糊处理
* :base62 -- 设置成true时表示启用Base-62编码
* :protect -- 压缩保护的变量名组成的数组

 

你也可以通过命令行进行压缩处理:

packr menu.js > menu-min.js

 

可以通过加入-b选项进行base62压缩,例如:

packr menu.js > menu-min.js -b

 

可以通过-help选项查看帮助信息,例如:

packr -help

  

除此之外,你可以通过apache来为文件提供压缩服务。只要在.htaccess文件中加入以下这段即可:

AddEncoding gzip .gz
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)$ $1.gz [QSA,L]

 

感兴趣的朋友可以到http://dean.edwards.name/packer试下效果。

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics