jakercz/webloader

简单易用,适用于 JavaScript 和 CSS 的 PHP 打包器

v1.3.2 2021-03-09 15:11 UTC

This package is auto-updated.

Last update: 2024-09-09 23:02:14 UTC


README


📦 简单易用,适用于 JavaScript 和 CSS 的 PHP 打包器。

简而言之

  • 可配置:在一个文件中(以下示例或在文档中)
  • 文件 集合容器:使资产管理变得极其简单
  • 过滤器:两种不同的调用方式
  • 路径占位符:可重用的文件路径,减少编写
  • 允许加载 远程本地 文件
  • 如果您有一些关键的 CSS,可以将其直接加载到页面中,所需的配置最少
  • 为只读部署准备就绪 - Web Loader 能够一次性编译所有文件集合
  • 调试栏 用于 Tracy

要求

  • PHP 7.2+
  • 如果您使用 Nette 框架 - v2.4+

安装

 composer require machy8/webloader

文档

快速入门

假设我们有两个 CSS 文件(styla-a.cssstyle-b.css),我们想要将它们打包到一个文件中,该文件名为 my-bundle。此捆绑包将存储在 webtemp 目录(必须可通过浏览器访问)中。

配置 Web Loader 的推荐方法是通过 neon 配置文件。第一步是创建一个 bundle.neon 文件。

my-bundle:
    cssFiles:
        - path/to/style-a.css
        - path/to/style-b.css

下一步是初始化 Web Loader,设置输出目录路径,并告诉他从 bundle.neon 创建捆绑包。

$webloader = new \WebLoader\Engine('path/to/webtemp');
$webloader->createFilesCollectionsFromConfig('path/to/bundle.neon');

最后一步是调用文件集合渲染以渲染名为 my-bundle 的 CSS 文件集合。

echo $webloader->getFilesCollectionRender()->css('my-bundle');

经过最后编辑的 PHP 文件将如下所示

$webloader = new \WebLoader\Engine('path/to/output/dir');
$webloader->createFilesCollectionsFromConfig('path/to/bundle.neon');

echo $webloader->getFilesCollectionRender()->css('my-bundle');

输出将类似于以下代码

<link type="text/css" rel="stylesheet" href="/path/to/webtemp/my-bundle.css?v=1512829634">

快速入门(针对 Nette 框架)

对于 Nette 框架,这与它非常相似。首先,注册 Web Loader 扩展。

extensions:
    webloader: WebLoader\Bridges\Nette\WebLoaderExtension

下一步是添加包含 my-bundle 集合配置的 Web Loader 部分。

webloader:
    filesCollections:
        my-bundle:
            cssFiles:
                - path/to/style-a.css
                - path/to/style-b.css

在您的演示者中注入引擎...

/**
 * @var Engine
 */
private $webLoader;


public function __construct(\WebLoader\Engine $engine)
{
    $this->webLoader = $engine;
}

并设置模板参数(例如在 beforeRender 方法中)。

public function beforeRender()
{
    $this->template->setParameters([
        'webloaderFilesCollectionRender' => $this->webLoader->getFilesCollectionRender()
    ]);
}

最后一步是在 latte 模板中调用渲染。

{$webloaderFilesCollectionRender->css('my-bundle')|noescape}