齿轮/assetmini

此包已被弃用且不再维护。作者建议使用 gears/asset 包。

基于 PHP 的 JS 和 CSS 资产压缩。

安装: 83

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:gears-assetmini

v0.9 2014-09-15 06:39 UTC

This package is not auto-updated.

Last update: 2019-02-20 17:56:31 UTC


README

基于 PHP 的 JS 和 CSS 资产压缩。

本项目旨在使您的 JS 和 CSS 资产最小化。是的,市场上有很多类似的产品。我们如何区别,我们提供了哪些功能?

  • 通常情况下,它将所有 CSS 或 JS 文件合并在一起,然后对输出进行压缩和 GZIP 压缩,从而得到最终的负载。

  • 然后它会缓存这个输出,以便 NGINX 或 Apache 可以直接提供输出,而无需接触 PHP。

  • 视图助手类会自动在需要时使缓存无效。

  • 它还可以解析 LESS/SASS 文件,因此您可以在 CSS 中使用变量和其他酷炫功能。它甚至可以即时编译 Twitter Bootstrap

  • 在调试模式下,它将单独加载标准的 CSS 和 JS 文件,不进行压缩或不进行压缩。

  • 在调试模式下,LESS 文件仍然会被解析,但同样不会进行压缩或压缩。

如何安装

通过 composer 安装非常简单

composer require gears/assetmini:*

如何使用它?

首先,当您安装 assetmini 时,它会尝试在您的项目根目录中创建一个名为 assets 的文件夹,如果该文件夹不存在。请放心,我们不会覆盖任何东西。

如果您想将资产文件夹放在其他地方,请将以下内容添加到您的 composer.json 文件中。请注意,这只是一个示例。

"extra":
{
	"assetmini-dir": "./public/assets"
}

无论您如何创建资产文件夹,都应该看起来像这个项目的 'skel' 文件夹。

此外,请注意,缓存文件夹需要可由 PHP 写入。

Apache 应该开箱即用。这是通过包含一个 .htaccess 文件来实现的。如果使用视图助手,它甚至会更新 .htaccess 文件以具有正确的 RewriteBase 路径。

为了配置 Nginx,您可以这样做

location ~* \.(css|js)$
{
	try_files $uri /assets/min.php?$uri;
	expires max;
	gzip_static on;
	gzip_http_version 1.1;
	gzip_proxied expired no-cache no-store private auth;
	gzip_disable "MSIE [1-6]\.";
	gzip_vary on;
	add_header Pragma public;
	add_header Cache-Control "public, must-revalidate, proxy-revalidate";
	log_not_found off;
	access_log off;
}

此块将捕获所有压缩过的 CSS 或 JS 请求。我们使用 try_files 来测试是否存在已压缩版本,如果不存在,我们将让 PHP 为我们生成它。请确保您将 Nginx 指向 min.php 的正确位置

一旦您的 PHP 服务器设置完成并开始使用适当的重写,您就可以像这样使用视图助手

require('vendor/autoload.php');
AssetMini::setDebug(true);
AssetMini::css(['file1','file2','file3','etc']);
AssetMini::js(['file1','file2','file3','etc']);

关于 AssetMini 范围的说明。 Composer 会加载一个名为 Globalise.php 的文件,这个文件只是检查全局范围内是否存在名为 \AssetMini 的类。如果不存在,它将使用 class_alias 函数将 \Gears\AssetMini\HtmlHelper 类别名到 \AssetMini

这意味着您不再需要在每个需要使用 AssetMini 的 PHP 脚本中放置以下内容

use Gears\AssetMini\HtmlHelper as AssetMini;

我对这个功能有点犹豫,并愿意听取大家的意见。如果您认为这是愚蠢的,请告诉我...

手动设置路径

对于大多数设置,AssetMini 可能会猜测您项目的基准 URL 和路径,但如果不行,您可能需要自己这样做。

设置基本URL

AssetMini::setBaseUrl('http://example.org/custom/path/to/assets');

设置基本路径

AssetMini::setBasePath('/var/www/vhosts/example_org/custom/path/to/assets');

需要注意的一些事项

  • 现在您需要负责检测http/https。
  • 您还必须确保htaccess RewriteBase设置正确。
  • 在两种情况下,确保没有尾部斜杠。
  • 您不能只做其中之一而不做另一个。

点表示法文件夹/文件名

首先,如果您熟悉Laravel,这基本上与指定视图名称的方式相同。我可以在这里啰嗦一会儿,但我觉得用例子展示更简单。

假设您的资源文件夹看起来像这样

/assets
	/js
		/jquery
			/plugins
				/googlemaps.js
			/migrate.js
			/jquery.js
		/modernizr.js

要加载这些资源,PHP代码将是

AssetMini::js
([
	'modernizr',
	'jquery.jquery',
	'jquery.migrate',
	'jquery.plugins.googlemaps'
]);

预压缩资源

如果您之前使用过某种压缩工具,您可能很熟悉这种情况:未压缩时工作正常,但一旦压缩代码,就会全部崩溃并失败。

没有两种压缩程序是完全相同的,虽然其中一种可能在同一源代码上工作,而另一种则不行。我确实非常喜欢AssetMini,但我也首先承认有时我们甚至无法做到完美。

无论如何,我没有编写压缩代码,您可以感谢Robert Hafner和Joe Scylla……并向他们发送所有bug hahaha :)

回到主题。为了解决这个问题,您可以提供一个预压缩资源。只需确保文件名包含'.min.',我们将跳过压缩过程。我们仍然会将文件与任何其他资源组合,并对其进行gzip压缩。

Laravel集成

我已经为Laravel包含了一个ServiceProvider和Facade。您在Laravel项目中需要做的只是像上面那样require assetmini。然后,将以下内容添加到您的main config/app.php 文件中。

// Add to the providers array 
'Gears\AssetMini\Laravel\ServiceProvider'
// Add to the aliases array
'AssetMini' => 'Gears\AssetMini\Laravel\Facade'

做出贡献

这个项目首先是一个工具,帮助我创建出色的网站。因此,自然地,我会根据我的使用来定制。我只是那些决定分享代码的非常善良的人之一,这样我就会感到温暖和舒适。这就是开源的全部意义,对吧 :)

如果您觉得您有一些很棒的新功能,或者发现了我没有注意到的bug,我会非常乐意听取您的意见。只需在github项目上创建一个新的问题,并可选地向我发送一个pull request。

由Brad Jones开发 - brad@bjc.id.au