在服务器端减小CSS、HTML、JavaScript、JSON、PHP和XML代码的大小。

dev-main 2024-09-27 14:51 UTC

This package is auto-updated.

Last update: 2024-09-27 14:52:03 UTC


README

c-s-s.php h-t-m-l.php j-s.php j-s-o-n.php p-h-p.php x-m-l.php

动机

该项目最初是一个gist,现在比它的副本拥有更多的星标,而实际上它是为了放弃该gist而制作的。它受到了一个代码片段的启发,这个代码片段可能会在未来丢失,所以我决定复制它

我曾经收到一封电子邮件,有人想使用我扩展的一些代码,他打算在专有应用程序中使用,希望不受GPL限制的约束。一开始在法律上是不可能的,因为扩展始终是其核心应用程序的一部分。而其核心应用程序,在这个案例中,从一开始就使用了GPL许可证。因此,其扩展也必须在GPL许可证下许可。

然后我决定在MIT许可证下完全重写此项目,因为我不再认为这种实现是一个“复杂的东西”,它需要大量的编程工作。我还想使我的实现对广泛的人群(包括那些开发专有应用程序的人)普遍可用,这样我就可以更容易地从他们那里获得经济支持。

使用方法

此转换器可以使用Composer进行安装,但它不需要任何其他依赖项,并且仅使用Composer自动包含文件的能力。那些不使用Composer的人应该能够在没有任何问题的前提下,将index.php文件直接包含到您的应用程序中。

使用Composer

从命令行界面,导航到您的项目文件夹,然后运行此命令

composer require taufik-nurrohman/minify

在您的应用程序中引入生成的自动加载文件

<?php

use function x\minify\c_s_s as minify_css;
use function x\minify\h_t_m_l as minify_html;
use function x\minify\j_s as minify_js;
use function x\minify\j_s_o_n as minify_json;
use function x\minify\p_h_p as minify_php;
use function x\minify\x_m_l as minify_xml;

require 'vendor/autoload.php';

echo minify_css('asdf { asdf: 0px; } asdf { /* asdf */ }'); // Returns `'asdf{asdf:0}'`

使用文件

在您的应用程序中引入index.php文件

<?php

use function x\minify\c_s_s as minify_css;
use function x\minify\h_t_m_l as minify_html;
use function x\minify\j_s as minify_js;
use function x\minify\j_s_o_n as minify_json;
use function x\minify\p_h_p as minify_php;
use function x\minify\x_m_l as minify_xml;

require 'index.php';

echo minify_css('asdf { asdf: 0px; } asdf { /* asdf */ }'); // Returns `'asdf{asdf:0}'`

注意

我选择命名函数的方式可能会让很多人感到烦恼,但这部分是Mecha决定保留的标准规则的一部分,以使其可逆。您始终可以在特定文件中创建一个函数别名列表,您可以将其存储在某个地方,稍后在您的应用程序中包含它。这样,您就可以只使用您觉得更易打的函数别名。

此转换器只关注空白符的删除。其他优化被视为额外加分项。它不能读取您的代码,只能进行通用的令牌化,例如将注释和字符串分组为单个令牌。它不会修复您的代码,例如在行尾添加可选的分号,因为它是跟随换行符的,所以在这种情况下分号是可选的。但是,然后您的JavaScript代码在压缩后可能会中断,因为所需的换行符现在已消失。

// Before
a()
b()
c()

// After
a()b()c()

我仍然不太明白为什么这种写JavaScript的方法在最近变得如此流行。可能启动这种编码风格的人喜欢这个编码风格,但他/她可能不愿意承认。

这段CSS代码不合法,因为需要在and标记之后有一个空格,即使在这种情况下CSS压缩器也不会插入空格。

/* Before */
@media (min-width: 1280px)and(max-width: 1919px) {
  color: #f00;
}

/* After */
@media (min-width:1280px)and(max-width:1919px){color:#f00}

理念是:你需要对将要压缩的代码负责。如果原始代码运行良好,那么压缩后的代码也很有可能会运行良好。

选项

CSS

<?php

c_s_s(?string $from): ?string;

HTML

<?php

h_t_m_l(?string $from): ?string;

JS

j_s(?string $from): ?string;

JSON

<?php

j_s_o_n(?string $from): ?string;

PHP

<?php

p_h_p(?string $from): ?string;

XML

<?php

x_m_l(?string $from): ?string;

测试

将此仓库克隆到支持PHP的Web服务器的根目录下,然后你可以使用浏览器打开test.php文件,以查看不同情况下此转换器的结果和性能。

调整

全局可重用函数

你可以使用此方法在全局范围内缩短函数名。

<?php

require 'index.php';

// Or, if you are using Composer…
// require 'vendor/autoload.php';

function minify_css(...$v) {
    return x\minify\c_s_s(...$v);
}

function minify_html(...$v) {
    return x\minify\h_t_m_l(...$v);
}

function minify_js(...$v) {
    return x\minify\j_s(...$v);
}

function minify_json(...$v) {
    return x\minify\j_s_o_n(...$v);
}

function minify_php(...$v) {
    return x\minify\p_h_p(...$v);
}

function minify_xml(...$v) {
    return x\minify\x_m_l(...$v);
}

许可

此库采用MIT许可。如果你从这个库中获得了经济上的收益,请考虑捐赠💰