jbsnewmedia / asset-composer-bundle
A Symfony bundle to help you manage your assets
Installs: 172
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
pkg:composer/jbsnewmedia/asset-composer-bundle
Requires
- php: >=8.1
- symfony/framework-bundle: ^6.4|^7.0
- symfony/yaml: ^6.4|^7.0
- twig/twig: ^3.0
Requires (Dev)
README
AssetComposerBundle is a Symfony bundle that helps you manage and serve assets directly from the vendor directory. It ensures all files are kept up-to-date by leveraging file modification timestamps for cache busting.
π Features
- Manage CSS/JS assets via Composer packages
- Automatic versioning using file timestamps
- Simple integration with Twig templates
- Supports production/dev-only assets via
assetcomposer.json - Symfony 6 & 7 compatible
βοΈ Requirements
- PHP 8.1 or higher
- Symfony Framework 6.4 or 7.0
π¦ Installation
Use Composer to install the bundle:
composer require jbsnewmedia/asset-composer-bundle
π Usage
1. Install Asset Packages via Composer
composer require twbs/bootstrap composer require components/font-awesome composer require avalynx/avalynx-alert
2. Register Assets in Twig Templates
{% do addAssetComposer('twbs/bootstrap/dist/css/bootstrap.css') %}
{% do addAssetComposer('components/font-awesome/css/all.css') %}
{% do addAssetComposer('avalynx/avalynx-alert/dist/css/avalynx-alert.css') %}
{% do addAssetComposer('avalynx/avalynx-alert/dist/js/avalynx-alert.js') %}
3. Render in Layout
<!DOCTYPE html> <html> <head> {% block stylesheets %} {{ renderAssetComposerStylesheets() }} {% endblock %} </head> <body> {% block body %}{% endblock %} {% block javascripts %} {{ renderAssetComposerJavascripts() }} {% endblock %} {{ renderAssetComposerJavascripts('bottom') }} </body> </html>
π File Structure
config/
βββ routes.yaml
βββ services.yaml
src/
βββ Controller/
β βββ AssetComposerController.php
βββ DependencyInjection/
β βββ AssetComposerExtension.php
β βββ Configuration.php
βββ Service/
β βββ AssetComposer.php
βββ Twig/
β βββ AssetComposerExtension.php
βββ AssetComposerBundle.php
π§° Configuration (Optional)
You can create an assetcomposer.json file in your asset packages to define which files should be exposed:
{
"name": "library-name",
"files": [
"dist/css/styles.css",
"dist/js/scripts.js"
],
"files-dev": [
"src/css/dev-styles.css",
"src/js/dev-scripts.js"
]
}
π§ Development Tools
To maintain code quality, this project uses:
- PHP-CS-Fixer (ECS):
composer bin-ecs - PHPStan:
composer bin-phpstan - Rector:
composer bin-rector
Install and update tools using:
composer bin-ecs-install composer bin-phpstan-install composer bin-rector-install composer bin-phpunit-install
π§ͺ Testing & QA
All code adheres to modern PHP standards. Use the provided scripts to analyze and refactor the codebase:
composer bin-phpstan # Static analysis composer bin-ecs # Coding standards (check) composer bin-ecs-fix # Coding standards (fix) composer bin-rector # Code transformation (dry-run) composer bin-rector-process # Code transformation (apply) composer test # Run tests composer test-coverage # Run tests with coverage
π License
This bundle is licensed under the MIT license. See the LICENSE file for more details.
Developed by JΓΌrgen Schwind and other contributors.
π€ Contributing
Contributions are welcome! If you'd like to contribute, please contact us or fork the repository and submit a pull request with your changes or improvements.
π« Contact
If you have any questions, feature requests, or issues, please open an issue on our GitHub repository or submit a pull request.
Always up-to-date. Simple. Composer-native asset management.