0

我正在做一个公共项目,我们要做的一件事是 CSS 文件合并和最小化器以及 js 文件合并和最小化器。要求如下:

  • 没有测试代码。只有稳定的代码。
  • 必须用php编写。
  • 必须在 php 5.4 中工作。
  • 必须与 php 5.3 兼容
  • CSS 最小化程序可能与 js 最小化程序完全不同(不一定是二合一)
  • 最小化的结果必须在一定程度上起作用,以便可以将其转储到文件中。浏览器仅访问转储文件。这必须能够处理大量工作,如此缩小,很棒的工具,但不是一种选择。

如果系统只是一个最小化器,我可以自己在服务器中进行合并(字符串连接)并稍后使用最小化器。

当有新的东西要压缩时,我会使用我想要缩小 js 或 CSS 时调用的系统(例如类、函数等)。它的输出应该是放到一个文件中的,所以如果它的输出可以直接放到一个文件中很好(!),如果它只是一个返回给程序的字符串,很好(!)我的程序是知道什么时候压缩的文件应该被替换,并且是处理文件访问权限的人。

这是一个必须在 php 主动禁用所有外部通信并且大多数功能被禁用听起来有点像的情况下工作的项目。这意味着没有 url 包含,没有 curl,没有 url file_get_contents(),没有 exec() 等等......

注意:这个网站上有很多关于这个主题的问题。问题是它们中的大多数都是通才而不是回答我需要的东西(例如:对建议 YUI 或目前已知有错误的压缩器更感兴趣)。

我已经尝试在互联网上找到它,但我只能找到旧的废弃项目,或者我得到需要使用命令行界面的压缩器。

4

2 回答 2

2

对于 CSS,我个人使用CSSMin效果很好。这是一个简单的 PHP 解决方案,它甚至可以通过声明来模拟CSS 变量@variable

对于 JS 文件,我调用Google Closure Compilercurl它不能满足您的需求。

于 2012-03-10T09:40:22.683 回答
0

如果您想摆脱 CLI,最好的选择可能是使用在线工具(使用 cURL 访问它)或基于 Java 的工具(使用 exec() 方法)。

使用基于网络的东西似乎你会更舒服,为此我推荐UglifyJS用于 Javascript 文件和Prefixr用于 CSS。

请注意,Prefixr 默认不会压缩输入:它的重点是为最新的 CSS 属性添加供应商前缀(这在当今是必不可少的)。但是通过发送一个 POST 参数 'compress_option' 你会得到压缩的输出。无论如何,由于 [Prefixr 的 API 使用页面][5] 没有提供 PHP cURL 示例,因此您可以:

$concatenated_content = '.any_css {color: #000;}';

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://prefixr.com/api/index.php");
curl_setopt($curl, CURLOPT_POSTFIELDS, array('css' => $concatenated_content, 'compress_option' => 'on'));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$compressed_content = curl_exec($curl);
curl_close($curl);

如果您想使用本地工具,我推荐 YUI 压缩器 (http://developer.yahoo.com/yui/compressor/) 和 Google Closure (https://developers.google.com/closure/,仅使用它对于 JS,我认为 Google Closure Stylesheets 还不成熟)。在这种情况下,您可以使用上面提到的 PHP exec() 函数,CLI 不会伤害您。

于 2012-03-09T12:40:38.463 回答