Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Minify Bundle Laravel Package

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%.

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation Add the bundle via Composer:

    composer require sensiolabs/minify-bundle
    

    Enable it in config/bundles.php:

    return [
        // ...
        SensioLabs\MinifyBundle\SensioLabsMinifyBundle::class => ['all' => true],
    ];
    
  2. 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']
    
  3. First Use Case Run the minifier via CLI:

    php bin/console minify:minify
    

    Verify output in public/js/ and public/css/.


Implementation Patterns

Workflow Integration

  1. 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
    
  2. 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
    
  3. Conditional Minification Use environment-based rules:

    sensio_labs_minify:
        js:
            enabled: '%kernel.debug% ? false : true'
    

Advanced Patterns

  • Custom Minifier Classes Extend SensioLabs\MinifyBundle\Minifier\MinifierInterface for custom logic (e.g., custom JS/CSS optimizations).
  • Exclusion Lists Skip specific files:
    sensio_labs_minify:
        js:
            exclude: ['**/vendor.js', '**/debug.js']
    

Gotchas and Tips

Pitfalls

  1. Cache Invalidation Clear cache after config changes:

    php bin/console cache:clear
    php bin/console minify:minify
    

    Use --force to bypass cache checks.

  2. File Permissions Ensure public/js/ and public/css/ are writable by the web server user.

  3. Source Maps Disable if using source maps elsewhere:

    sensio_labs_minify:
        js:
            source_map: false
    

Debugging

  • Verbose Output Run with -v for detailed logs:
    php bin/console minify:minify -v
    
  • Dry Run Test without writing files:
    php bin/console minify:minify --dry-run
    

Extension Points

  1. 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');
    }
    
  2. Custom Minifier Services Register a custom minifier as a service:

    services:
        app.custom_minifier:
            class: App\Minifier\CustomMinifier
            tags: ['sensio_labs_minify.minifier']
    
  3. 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')));
    
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elsayed85/laravel-api-exceptions
ouhssini/laravel-demo-mode
daworks/ncloud-outbound-mailer-driver
gp247/cms
ignibyte/aic-gates
nexa-merchant/blog
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource