From b3c927b3bee6d88610d6a11b4e8d1ad122db4091 Mon Sep 17 00:00:00 2001 From: toby Date: Tue, 29 May 2018 21:11:13 +1000 Subject: [PATCH 1/4] addFileToAssets allow output name override --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 5d6d28d0..796ada90 100644 --- a/index.js +++ b/index.js @@ -324,7 +324,7 @@ class HtmlWebpackPlugin { /* * Pushes the content of the given filename to the compilation assets */ - addFileToAssets (filename, compilation) { + addFileToAssets (filename, compilation, outputName) { filename = path.resolve(compilation.compiler.context, filename); return Promise.all([ fsStatAsync(filename), @@ -338,7 +338,7 @@ class HtmlWebpackPlugin { }) .catch(() => Promise.reject(new Error('HtmlWebpackPlugin: could not load file ' + filename))) .then(results => { - const basename = path.basename(filename); + const basename = outputName || path.basename(filename); if (compilation.fileDependencies.add) { compilation.fileDependencies.add(filename); } else { From d395aaf3372ecf0066a1f86260d906a74548cdb7 Mon Sep 17 00:00:00 2001 From: toby Date: Wed, 30 May 2018 00:57:52 +1000 Subject: [PATCH 2/4] contentHash and test --- index.js | 9 ++++++++- spec/BasicSpec.js | 27 +++++++++++++++++++++++++++ spec/fixtures/additional_asset.js | 1 + 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 spec/fixtures/additional_asset.js diff --git a/index.js b/index.js index 796ada90..7a08f616 100644 --- a/index.js +++ b/index.js @@ -7,6 +7,7 @@ const vm = require('vm'); const fs = require('fs'); const _ = require('lodash'); const path = require('path'); +const crypto = require('crypto'); const childCompiler = require('./lib/compiler.js'); const prettyError = require('./lib/errors.js'); const chunkSorter = require('./lib/chunksorter.js'); @@ -338,7 +339,13 @@ class HtmlWebpackPlugin { }) .catch(() => Promise.reject(new Error('HtmlWebpackPlugin: could not load file ' + filename))) .then(results => { - const basename = outputName || path.basename(filename); + const basename = outputName + ? outputName.replace(/\[contenthash]/gi, () => { + const hash = crypto.createHash('md5'); + hash.update(results.source); + return hash.digest('hex'); + }) + : path.basename(filename); if (compilation.fileDependencies.add) { compilation.fileDependencies.add(filename); } else { diff --git a/spec/BasicSpec.js b/spec/BasicSpec.js index a5b5861a..52770706 100644 --- a/spec/BasicSpec.js +++ b/spec/BasicSpec.js @@ -1748,4 +1748,31 @@ describe('HtmlWebpackPlugin', function () { })] }, [/[\s]*