dejvidecz / assets
Fork of Modular assets system for Nette framework
Installs: 7
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 2
pkg:composer/dejvidecz/assets
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: 2025-10-15 06:14:13 UTC
README
Simple modular assets system for Nette framework.
Installation
$ composer require dejvidecz/assets
$ composer update
Then just enable nette extension in your config.neon:
extensions: assets: Carrooi\Assets\DI\AssetsExtension
Configuration
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
Now we've got one namespace front with two resources css and js. You can create as many namespaces or resources as you want with any names.
Each resource needs its compiler, paths to compile and target built file with public path.
- Compiler: Currently just
cssorjs. It can be also name of custom compiler class - Paths: Names of files, directories or configurations for nette/finder
- Target: Path in file system to result file
- PublicPath: Path to built file accessible from browser
Usage
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}
That will combine all our registered css files into one and add it to your template via our component.
Filters
public function __construct(\Carrooi\Assets\Assets $assets) { $resource = $assets->getResource('front', 'css'); $resource->getCompiler()->addFileFilter(function($file) { return "/* Author: John Doe */\n". $file; }); }
This file filter on compiler will prepend author's name before each compiled file.
Or there are also filters for final built files.
public function __construct(\Carrooi\Assets\Assets $assets) { $resource = $assets->getResource('front', 'css'); $resource->addFilter(function($file) { return "/* Built with Carrooi/Assets */\n". $file; }); }
This filter will add "Built with Carrooi/Assets" text to the beginning of target file.
Add paths
public function __construct(\Carrooi\Assets\Assets $assets) { $resource = $assets->getResource('front', 'css'); $resource->addPath(__DIR__. '/../../widget.css'); // just like in neon configuration }
CompilerExtension
Your compiler extensions can also implement \Carrooi\Assets\DI\IAssetsProvider interface for some additional
configuration.
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', ], ], ], ] } }
Changelog
-
1.0.0
- First version
-
1.0.1
- IAssetsProvider::getAssetsFiles() renamed to ::getAssetsConfiguration() [BC Break]
-
1.0.2
- Optimized dependencies
- Removed unused exceptions
- Optimized checking for files' modifications