## Getting Started
### Minimal Setup
1. **Installation** (if still needed for legacy projects):
```bash
composer require anaxago/assetic-bundle
(Note: This is deprecated; use Webpack Encore for new projects.)
Enable the Bundle (in config/bundles.php):
return [
// ...
Anaxago\AsseticBundle\AsseticBundle::class => ['all' => true],
];
Configure Assetic (in config/packages/assetic.yaml):
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: [uglifyjs]
Dump Assets (via CLI):
php bin/console assetic:dump --env=prod
uglifyjs, yui_css).app_123abc.css).Asset Definition:
config/packages/assetic.yaml under assetic.assets.admin_css, vendor_js).Filter Chaining:
cssrewrite → yui_css).cssrewrite, yui_css, lessphp.uglifyjs, closure.imagemin.Environment-Specific Config:
%kernel.environment% to toggle filters (e.g., disable uglifyjs in dev):
filters:
uglifyjs:
bin: '%env(UGLIFYJS_BIN)%'
apply_to: '%kernel.environment% == "prod" ? "js" : null'
Twig Integration:
{{ asset('bundles/assetic/app_css') }}
assetic_add_filter for dynamic filters.CLI Automation:
php bin/console assetic:dump --watch --env=prod
php bin/console cache:clear && php bin/console assetic:dump
assetic.yaml is auto-loaded via Flex recipes.Assetic\Filter\FilterInterface and register in config:
assetic:
filters:
custom_filter:
class: App\Filter\CustomFilter
--dump flag to inspect generated assets:
php bin/console assetic:dump --dump --env=dev
Deprecation Warning:
AsseticBundle being obsolete.Filter Compatibility:
yui_css) may require external binaries (e.g., yui-compressor).npm install -g yui-compressor) or use PHP alternatives (e.g., league/league-yui-compressor).Caching Issues:
php bin/console cache:clear
php bin/console assetic:dump --force
--watch in development to auto-rebuild on changes.Twig Template Caching:
php bin/console cache:clear --env=prod --no-warmup
Symfony 4.4+ Quirks:
anaxago/assetic to ~4.4 and update symfony/dependency-injection to ~4.0.Verbose Output:
--verbose to see filter execution:
php bin/console assetic:dump --verbose
Dry Runs:
php bin/console assetic:dump --dry-run
Log Filter Errors:
assetic:
debug: true
Custom Asset Loaders:
Assetic\Asset\AssetLoaderInterface for dynamic asset resolution (e.g., from a database).Event Listeners:
assetic.asset.dump events to modify assets pre-dump:
// src/EventListener/AsseticListener.php
public function onDump(AsseticEvent $event) {
$asset = $event->getAsset();
$asset->addFilter(new CustomFilter());
}
Environment Variables:
.env:
filters:
uglifyjs:
bin: '%env(UGLIFYJS_PATH)%'
Asset Versioning:
AsseticBundle\Twig\Extension\AsseticExtension to customize versioning logic (e.g., Git hash-based).symfony/asset as a stopgap for simple cases before full Webpack Encore migration.uglifyjs over closure for JS minification (faster in most cases).cssrewrite to optimize CSS asset loading.Assetic\Factory\AssetFactory in PHPUnit for isolated tests:
$factory = $this->createMock(AssetFactory::class);
$factory->method('createAsset')->willReturn(new Asset('test.css'));
*(Note: While this package is deprecated, the patterns below remain relevant for understanding Assetic’s core functionality, which may still be useful in legacy systems or as a reference for modern asset pipelines like Webpack Encore.)*
How can I help you explore Laravel packages today?