FIX missing [hash] interpolation in publicPath

Webpack gives the possibility to use the build [hash] in
output.publicPath option:
https://webpack.github.io/docs/long-term-caching.html

However HtmlWebpackPlugin is reading directly the raw option, preventing the
user to use this option when using it.
This commit is contained in:
Thomas Guillory 2015-10-02 16:13:51 +02:00
parent 273371859b
commit 41a255a2f1
2 changed files with 13 additions and 1 deletions

View File

@ -175,7 +175,7 @@ HtmlWebpackPlugin.prototype.htmlWebpackPluginAssets = function(compilation, webp
// Use the configured public path or build a relative path
var publicPath = typeof compilation.options.output.publicPath !== 'undefined' ?
compilation.options.output.publicPath :
compilation.mainTemplate.getPublicPath({hash: webpackStatsJson.hash}) :
path.relative(path.dirname(self.options.filename), '.');
if (publicPath.length && publicPath.substr(-1, 1) !== '/') {

View File

@ -304,6 +304,18 @@ describe('HtmlWebpackPlugin', function() {
}, [/<script src="index_bundle_[0-9a-f]+\.js/], null, done);
});
it('handles hashes in publicPath', function(done) {
testHtmlPlugin({
entry: path.join(__dirname, 'fixtures/index.js'),
output: {
path: OUTPUT_DIR,
filename: 'index_bundle.js',
publicPath: 'assets/[hash]/'
},
plugins: [new HtmlWebpackPlugin()]
}, [/<script src="assets\/[0-9a-f]+\/index_bundle\.js/], null, done);
});
it('allows to append hashes to the assets', function(done) {
testHtmlPlugin({
entry: path.join(__dirname, 'fixtures/index.js'),