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

1.1.7 2026-02-09 14:05 UTC

This package is auto-updated.

Last update: 2026-02-11 12:28:25 UTC


README

Packagist Version Packagist Downloads PHP Version Require Symfony Version License Tests PHP CS Fixer PHPStan Rector codecov

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.