正在寻找一个CSS和一个js文件合并和最小化


Looking for a CSS and for a js file merger and minimizer

我正在做一个公共项目,我们正在做的事情之一是CSS文件合并和最小化以及js文件合并和最小。先决条件如下:

  • 没有测试版代码。只有稳定的代码
  • 必须用php编写
  • 必须在php5.4中工作
  • 必须与php 5.3兼容
  • CSS最小化程序可能与js最小化程序完全不同(它不必是二合一)
  • 最小化的结果必须在一定程度上起作用,以便将其转储到文件中。浏览器只访问转储的文件。这必须能够处理大量的工作,所以迷你,伟大的工具,但不是一个选项

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

当有新的东西需要压缩时,我会使用我想缩小js或CSS时调用的系统(例如类、函数等)。它的输出应该放在一个文件中,所以如果它的输出可以直接进入一个文件,那就太好了(。

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

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

我已经试着在互联网上找到了这个,但我只能找到旧的废弃项目,或者我得到了需要使用命令行接口的压缩器。

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

对于JS文件,我使用curl调用谷歌闭包编译器,这不满足您的需求。

如果您想摆脱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/)和谷歌关闭(https://developers.google.com/closure/,仅用于JS,在我看来,谷歌闭包样式表还不成熟)。在这种情况下,您可以使用上面提到的PHP exec()函数,CLI不会伤害您。