Installation Add the bundle via Composer:
composer require sensiolabs/minify-bundle
Enable it in config/bundles.php:
return [
// ...
SensioLabs\MinifyBundle\SensioLabsMinifyBundle::class => ['all' => true],
];
Basic Configuration
Edit config/packages/sensio_labs_minify.yaml to define minification rules:
sensio_labs_minify:
js:
output_path: 'public/js'
files: ['%kernel.project_dir%/assets/js/**/*.js']
css:
output_path: 'public/css'
files: ['%kernel.project_dir%/assets/css/**/*.css']
First Use Case Run the minifier via CLI:
php bin/console minify:minify
Verify output in public/js/ and public/css/.
Asset Pipeline Use with Laravel Mix/Webpack Encore for pre-processing:
// webpack.mix.js
mix.js('resources/js/app.js', 'public/js')
.then(() => runMinifier());
Call the minifier programmatically:
php bin/console minify:minify --env=prod
Symfony AssetMapper Compatibility
Integrate with asset_mapper for dynamic asset handling:
# config/packages/asset_mapper.yaml
asset_mapper:
minify:
enabled: true
bundle: SensioLabs\MinifyBundle\SensioLabsMinifyBundle
Conditional Minification Use environment-based rules:
sensio_labs_minify:
js:
enabled: '%kernel.debug% ? false : true'
SensioLabs\MinifyBundle\Minifier\MinifierInterface for custom logic (e.g., custom JS/CSS optimizations).sensio_labs_minify:
js:
exclude: ['**/vendor.js', '**/debug.js']
Cache Invalidation Clear cache after config changes:
php bin/console cache:clear
php bin/console minify:minify
Use --force to bypass cache checks.
File Permissions
Ensure public/js/ and public/css/ are writable by the web server user.
Source Maps Disable if using source maps elsewhere:
sensio_labs_minify:
js:
source_map: false
-v for detailed logs:
php bin/console minify:minify -v
php bin/console minify:minify --dry-run
Event Listeners
Hook into minify.pre_minify and minify.post_minify events:
// src/EventListener/MinifyListener.php
use SensioLabs\MinifyBundle\Event\MinifyEvent;
public function onPreMinify(MinifyEvent $event) {
$event->addFile('path/to/additional.js');
}
Custom Minifier Services Register a custom minifier as a service:
services:
app.custom_minifier:
class: App\Minifier\CustomMinifier
tags: ['sensio_labs_minify.minifier']
Asset Versioning
Combine with Laravel’s mix.version() for cache busting:
// In a controller
return asset('js/app.min.js?v=' . filemtime(public_path('js/app.min.js')));
How can I help you explore Laravel packages today?