sensiolabs/minify-bundle
SensioLabs Minify Bundle integrates the Minify tool into Symfony Asset Mapper to automatically minify CSS and JS during the build process. It stores minified assets in Symfony's cache, downloads the binary from GitHub, and can reduce asset sizes by up to 70%.
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?