davidecesarano/embryo-assets

一个简单的PHP库,可以将CSS或JavaScript文件合并、压缩并作为内联模式或捆绑文件提供服务。

1.0.1 2020-11-07 14:21 UTC

This package is auto-updated.

Last update: 2024-09-07 22:45:08 UTC


README

Embryo Assets是一个简单的PHP库,可以将CSS或JavaScript文件合并、压缩并作为内联模式或捆绑文件提供服务。

功能

  • 文件合并、压缩并缓存,直到它们被修改。
  • 使用由Andy Chilton提供的在线服务,http://chilts.org/
  • 在CSS文件中将相对路径替换为根公共路径。
  • PSR-7兼容。

要求

  • PHP >= 7.1
  • PSR-7 http消息实现和PSR-17 http工厂实现(例如Embryo-Http

安装

使用Composer

$ composer require davidecesarano/embryo-assets

使用方法

use Embryo\Assets\Assets;
use Embryo\Http\Factory\ServerRequestFactory;

$request = (new ServerRequestFactory)->createServerRequestFromServer();
$css = Assets::css([
    '/path/to/css/file1.css',
    '/path/to/css/file2.css',
    '/path/to/css/file3.css'
])
->setRequest($request)
->build('/path/to/source/compilers/');

这将生成

/path/to/compilers/app.css.map -> Sources array
/path/to/compilers/app.css -> Css code

现在,您可以在模板文件中使用它

<style>
    <?php echo $css; ?>
</style>

文件合并、压缩并缓存在一个文件中。当您修改一个文件或更改数组CSS文件时,它将重新编译该文件。

您可以通过内置的PHP服务器快速测试它,访问https://:8000

$ cd example
$ php -S localhost:8000

使用捆绑文件

如果您想包含捆绑文件而不是内联模式,请确保在公共文件夹中编译文件(例如,在assets文件夹中)。

Assets::css([
    '/path/to/css/file1.css',
    '/path/to/css/file2.css',
    '/path/to/css/file3.css'
])
->setRequest($request)
->build('/path/to/assets/');

现在,您可以在<link>标签中包含文件

<link rel="stylesheet" href="/assets/app.css" />

JS

它与CSS示例相同。您必须将CSS静态方法替换为js静态方法。

选项

forceBuild(bool $forceBuild): self

如果true,则对每个请求构建文件。默认是false

setFilename(string $filename): self

设置文件名。默认是app