Installation:
composer require apelaez-link/assetic-bundle
Ensure your composer.json includes the apelaez-link/assetic package (required dependency).
Enable the Bundle:
Add to config/bundles.php:
ApelaezLink\AsseticBundle\ApelaezLinkAsseticBundle::class => ['all' => true],
Basic Configuration:
Create config/packages/assetic.yaml (Symfony 4+) or add to app/config/config.yml (Symfony 2/3):
assetic:
assets:
app_css:
inputs:
- '%kernel.project_dir%/assets/css/style.css'
filters: [cssrewrite, yui_css]
app_js:
inputs:
- '%kernel.project_dir%/assets/js/app.js'
filters: [jsqueeze]
First Use Case:
php bin/console assetic:dump --env=dev
<link rel="stylesheet" href="{{ asset('build/css/app_css.css') }}">
Development vs. Production:
assetic:dump in dev for live-reload testing.prod and rely on web server caching (e.g., Nginx try_files or Symfony’s AssetMapper).Dynamic Asset Management:
inputs:
- '%kernel.project_dir%/assets/css/**/*.css'
%kernel.environment%:
inputs:
{% if app.environment == 'prod' %}
- '%kernel.project_dir%/assets/css/prod.css'
{% else %}
- '%kernel.project_dir%/assets/css/dev.css'
{% endif %}
Filter Chains:
filters:
- 'cssrewrite'
- 'yui_css'
- 'uglifyjs'
AsseticBundle's assetic.filter service tag.Versioning:
<link rel="stylesheet" href="{{ asset('build/css/app_css.css')|replace({'~': ''}) }}">
Configure in assetic.yaml:
use_controller: true # Auto-generates unique filenames
config/bundles.php (no autoloading).{{ asset() }} or {{ asset_url() }} in templates.assetic.yaml:
debug: true # Outputs unprocessed assets in dev
Deprecated Symfony Versions:
symfony/* dependencies explicitly in composer.json.Missing apelaez-link/assetic:
composer require apelaez-link/assetic:^1.6
vendor/apelaez-link/assetic exists after composer install.Asset Dumping in CI:
assetic:dump in CI/CD pipelines (use build tools like Webpack instead)..gitignore:
/var/cache/dev/
/public/build/
Filter Conflicts:
uglifyjs) may require PHP extensions (e.g., php-uglify).php bin/console debug:config assetic for filter errors.Twig Caching:
php bin/console cache:clear
php bin/console assetic:dump --env=dev --verbose
config/packages/monolog.yaml:
handlers:
assetic:
type: stream
path: "%kernel.logs_dir%/assetic.log"
level: debug
Custom Filters:
assetic.filter:
# config/services.yaml
services:
App\Filter\CustomFilter:
tags:
- { name: assetic.filter, alias: custom_filter }
Assetic\Filter\FilterInterface.Asset Loaders:
AsseticBundle\Loader\LoaderInterface for dynamic asset discovery.Configuration Overrides:
assetic.yaml parameters to override defaults:
parameters:
assetic.read_from: '@assetic.reader'
assetic.write_to: '%kernel.project_dir%/public/build'
inputs to avoid processing node_modules:
inputs:
- '%kernel.project_dir%/assets/css/src/**/*.css'
- '!%kernel.project_dir%/assets/css/src/node_modules/**'
assetic:watch for real-time updates:
php bin/console assetic:watch --env=dev
How can I help you explore Laravel packages today?