Skip to content

Asset Minifier for Symfony Asset Mapper - Made by SensioLabs

License

Notifications You must be signed in to change notification settings

sensiolabs/minify-bundle

Repository files navigation

SensioLabs Minify Bundle

SensioLabs Minify Bundle for Symfony
composer require sensiolabs/minify-bundle

PHP Version CI Release Packagist Downloads License

Minify integration

SensioLabs Minify Bundle integrates Minify into Symfony Asset Mapper.

Asset Minifier

✅ Minify CSS and JS files, remove whitespace, comments, and more..

🌍🌍 Reduces the size of your assets by up to 70% (see metrics below).

🚀🚀🚀 Improves the loading time of your website, and the user experience.

Asset Mapper

🎯 Automatically minify assets during the build process.

📦📦 Stores minified assets in the Symfony cache.

🌿🌿🌿 Download the Minify binary automatically from Github.

Minification

JavaScript

Asset Before After Diff Compression Time
Autocomplete.js 20 kB 9.2 kB -54% ⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 8 ms
Bootstrap.js 145 kB 62 kB -57% ⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 10 ms
Video.js 2.3 MB 0.7 MB -71% ⬜️⬜️⬜️⬜️⬜️⬜️🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 42 ms
w3c.org js 44 kB 19 kB -57% ⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 6 ms

CSS

Asset Before After Diff Compression Time
Autocomplete.css 3.1 kB 2.5 kB -19% ⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️🟩🟩🟩🟩🟩 2 ms
Bootstrap.css 281 kB 232 kB -18% ⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️🟩🟩🟩🟩 9 ms
Video-js.css 53 kB 47 kB -12% ⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜⬜️⬜️⬜️⬜️⬜️⬜️⬜️️🟩🟩 4 ms
w3c.org css 111 kB 70 kB -37% ⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️⬜️🟩🟩🟩🟩🟩🟩🟩🟩 5 ms

Installation

Make sure Composer is installed globally, as explained in the installation chapter of the Composer documentation.

With Symfony Flex

Open a command console, enter your project directory and execute:

composer require sensiolabs/minify-bundle

Without Symfony Flex

Step 1: Download the Bundle

Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:

composer require sensiolabs/minify-bundle

Step 2: Enable the Bundle

Then, enable the bundle by adding it to the list of registered bundles in the config/bundles.php file of your project:

// config/bundles.php

return [
    // ...
    Sensiolabs\MinifyBundle\SensiolabsMinifyBundle::class => ['all' => true],
];

Depending on your deployment process, you might want to enable the bundle only in the desired environment(s).

Configuration

AssetMapper Settings

Asset types

# config/packages/sensiolabs_minify.yaml
sensiolabs_minify:
  asset_mapper:

    # Minify CSS and JS files  
    types: 
      css: true
      js:  true

Exclude files

# config/packages/sensiolabs_minify.yaml
sensiolabs_minify:
  asset_mapper:

    # Exclude files
    ignore_paths: 
      - 'admin/*'
      - '*.min.js'

    # Exclude vendor assets
    ignore_vendor: true

Minify Binary

Local binary

# config/packages/sensiolabs_minify.yaml
sensiolabs_minify:
  minify:

    # Auto-detect the local binary 
    local_binary: 'auto'

    # Specify the local binary path
    # local_binary: "/usr/local/sbin/minify"

    # Or set false to disable
    # local_binary: false

Automatic download

# config/packages/sensiolabs_minify.yaml
sensiolabs_minify:
  minify:

    # Enable automatic download from GitHub
    download_binary: true

    # Directory to store the downloaded binary
    download_directory: '%kernel.project_dir%/var/minify'

Console

Command Line

Install Minify locally

php bin/console minify:install

Minify assets

php bin/console minify:assets css/main.css css/main.min.css

Credits

License

The SensioLabs Minify Bundle is released under the MIT license.