dejvidecz / assets
Nette 框架模块化资产系统的分支
1.0.3
2022-02-14 21:58 UTC
Requires
- nette/application: ~2.2
- nette/di: ~2.2
- nette/finder: ~2.2
- nette/utils: ~2.2
Requires (Dev)
- nette/bootstrap: ~2.2
- nette/mail: ~2.2
- nette/safe-stream: ~2.2
- nette/tester: ~1.3.0
This package is auto-updated.
Last update: 2024-09-15 03:49:58 UTC
README
Nette 框架的简单模块化资产系统。
安装
$ composer require dejvidecz/assets
$ composer update
然后只需在您的 config.neon 中启用 nette 扩展
extensions: assets: Carrooi\Assets\DI\AssetsExtension
配置
extensions: assets: Carrooi\Assets\DI\AssetsExtension assets: front: css: compiler: css paths: - %appDir%/../www/css/style.css - [mask: '*.css', from: %appDir%/../www/css/components] - [mask: '*.css', in: %appDir%/../www/css/core] target: %appDir%/../www/public/style.css publicPath: /public/style.css js: compiler: js paths: - %appDir%/../www/js target: %appDir%/../www/public/web.js publicPath: /public/web.js
现在我们有一个名为 front
的命名空间,其中包含两个资源 css
和 js
。您可以根据需要创建任意数量的命名空间或资源,并指定任意名称。
每个资源都需要其编译器、编译路径以及带有公共路径的目标构建文件。
- 编译器:目前仅限
css
或js
。也可以是自定义编译器类的名称 - 路径:文件、目录或配置的名称,用于 nette/finder
- 目标:文件系统中的结果文件路径
- PublicPath:浏览器可访问的构建文件路径
用法
namespace App\Presenters; use Nette\Application\UI\Presenter; class BasePresenter extends Presenter { /** * @var \Carrooi\Assets\UI\IAssetsControlFactory * @inject */ public $assetsControlFactory; /** * @return \Carrooi\Assets\UI\AssetsControl */ protected function createComponentAssets() { return $this->assetsControlFactory->create(); } }
{control assets, front, css}
这将合并我们注册的所有 CSS 文件到一个文件中,并通过我们的组件添加到模板中。
过滤器
public function __construct(\Carrooi\Assets\Assets $assets) { $resource = $assets->getResource('front', 'css'); $resource->getCompiler()->addFileFilter(function($file) { return "/* Author: John Doe */\n". $file; }); }
此文件过滤器将在每个编译文件前添加作者的名称。
或者,也有针对最终构建文件的过滤器。
public function __construct(\Carrooi\Assets\Assets $assets) { $resource = $assets->getResource('front', 'css'); $resource->addFilter(function($file) { return "/* Built with Carrooi/Assets */\n". $file; }); }
此过滤器将在目标文件开头添加 "Built with Carrooi/Assets" 文本。
添加路径
public function __construct(\Carrooi\Assets\Assets $assets) { $resource = $assets->getResource('front', 'css'); $resource->addPath(__DIR__. '/../../widget.css'); // just like in neon configuration }
CompilerExtension
您的编译器扩展也可以实现 \Carrooi\Assets\DI\IAssetsProvider
接口以进行一些额外的配置。
namespace App\DI; use Carrooi\Assets\DI\IAssetsProvider; use Nette\DI\CompilerExtension; class AppExtension extends CompilerExtension implements IAssetsProvider { /** * @return array */ public function getAssetsConfiguration() { return [ 'front' => [ 'css' => [ 'paths' => [ __DIR__. '/../widget.css', ], ], ], ] } }
变更日志
-
1.0.0
- 第一个版本
-
1.0.1
- IAssetsProvider::getAssetsFiles() 已重命名为 ::getAssetsConfiguration() [向后不兼容]
-
1.0.2
- 优化依赖项
- 移除未使用的异常
- 优化文件修改检查