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).
Use Composer to install the bundle:
$ composer require incenteev/hashed-asset-bundle
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
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'
This bundle is under the MIT license.
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.
Issues and feature requests are tracked in the Github issue tracker.