carrooi / assets
Nette 框架的模块化资源系统
1.0.2
2015-01-26 14:20 UTC
Requires
- carrooi/helpers: ~1.0
- 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-06 03:51:44 UTC
README
为 Nette 框架提供的简单模块化资源系统。
安装
$ composer require carrooi/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; }); }
此过滤器将“使用 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
- 优化依赖关系
- 移除了未使用的异常
- 优化了文件修改的检查