Skip to content

Apply an asset version based on a hash of the asset for symfony/asset

License

Notifications You must be signed in to change notification settings

Incenteev/hashed-asset-bundle

Repository files navigation

HashedAssetBundle

The HashedAssetBundle provides an asset version strategy which uses a hash of the file content as asset version. This allows bumping the asset version separately for each asset (automatically).

CI Total Downloads Latest Stable Version

Installation

Use Composer to install the bundle:

$ composer require incenteev/hashed-asset-bundle

Usage

Register the bundle in the kernel:

// app/AppKernel.php

// ...

class AppKernel extends Kernel {
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new Incenteev\HashedAssetBundle\IncenteevHashedAssetBundle(),
        );
    }
}

Then configure FrameworkBundle to use the new version strategy:

framework:
    assets:
        version_strategy: incenteev_hashed_asset.strategy

Advanced configuration

The default configuration should fit common needs, but the bundle exposes a few configuration settings in case you need them:

incenteev_hashed_asset:
    # Absolute path to the folder in which assets can be found
    # Note: in case you apply a base_path in your asset package, it is not
    # yet applied to the string received by the bundle
    web_root: '%kernel.project_dir%/web'
    # Format used to apply the version. This is equivalent to the
    # `framework > assets > version_format` of the static version strategy
    # of FrameworkBundle.
    version_format: '%%s?%%s'

License

This bundle is under the MIT license.

Alternative projects

If you want to apply cache busting by renaming files in your asset pipeline (for instance with the webpack-encore versioning feature), have a look at the json_manifest strategy available in Symfony itself.

Reporting an issue or a feature request

Issues and feature requests are tracked in the Github issue tracker.