alenore/jsqueeze

PHP中高效的JavaScript压缩

此包的官方仓库似乎已消失,因此该包已被冻结。

v2.0.7 2022-03-01 13:20 UTC

This package is auto-updated.

Last update: 2023-03-01 00:50:13 UTC


README

Latest Stable Version Total Downloads Build Status

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文件)的条款下重新分发或修改。