alenore / jsqueeze
PHP中高效的JavaScript压缩
此包的官方仓库似乎已消失,因此该包已被冻结。
v2.0.7
2022-03-01 13:20 UTC
Requires
- php: >=5.3.0
README
JSqueeze可以缩小、压缩、最小化、篡改JavaScript代码。
这是一个自2003年以来一直在主要JavaScript框架(例如jQuery)上开发、维护和彻底测试的单个PHP类。
JSqueeze可以在任何没有解析错误的JavaScript代码上运行,即使分号缺失。
在压缩率方面,它与YUI Compressor和UglifyJS相媲美。
安装
通过composer
{ "require": { "patchwork/jsqueeze": "~2.0" } }
用法
use Patchwork\JSqueeze; $jz = new JSqueeze(); $minifiedJs = $jz->squeeze( $fatJs, true, // $singleLine true, // $keepImportantComments false // $specialVarRx );
特性
- 删除注释和空白。
- 重命名每个局部变量,通常是单个字符。
- 保留Microsoft的条件注释。
- 为了最大化后续HTTP压缩(deflate、gzip),新变量名通过考虑闭包、变量频率和字符频率来选择。
- 也可以重命名全局变量、方法和属性,但前提是它们通过某种命名约定进行了特殊标记。使用JSqueeze::SPECIAL_VAR_PACKER重命名以一个或多个
$
或单个_
开头的变量。 - 还可以重命名字符串中找到的局部/全局变量,但前提是它们进行了特殊标记。
- 如果你使用
with/eval
,请小心。
附加功能
- 将
false/true
替换为!1/!0
- 将
new Array/Object
替换为[]/{}
- 合并连续的
var
声明,用逗号分隔 - 合并连续连接的字符串
- 可以将可选的分号替换为换行符,从而便于输出调试。
- 保留用
/*!...
标记的重要注释 - 将三个分号
;;;
视为单行注释。 - 修复跨浏览器的特殊捕获范围
- 绕过IE<=8中对命名函数表达式错误处理的问题
待办事项
- foo['bar'] => foo.bar
- {'foo':'bar'} => {foo:'bar'}
- 删除死代码(未使用过的函数)
- 篡改原始数据:var WINDOW=window,等等。
许可证
此库是免费软件;您可以在(您选择的)Apache License v2.0(见提供的LICENCE.ASL20文件)或GNU General Public License v2.0(见提供的LICENCE.GPLv2文件)的条款下重新分发或修改。