Skip to content

Commit

Permalink
Merge pull request #7921 from webpack/bugfix/contenhash-id
Browse files Browse the repository at this point in the history
chunk ids contribute to contenthash for javascript
  • Loading branch information
sokra committed Aug 20, 2018
2 parents a02bf99 + c253b4b commit 0e60343
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 0 deletions.
2 changes: 2 additions & 0 deletions lib/JavascriptModulesPlugin.js
Expand Up @@ -135,6 +135,8 @@ class JavascriptModulesPlugin {
const template = chunk.hasRuntime()
? compilation.mainTemplate
: compilation.chunkTemplate;
hash.update(`${chunk.id} `);
hash.update(chunk.ids ? chunk.ids.join(",") : "");
template.updateHashForChunk(hash, chunk);
for (const m of chunk.modulesIterable) {
if (typeof m.source === "function") {
Expand Down
1 change: 1 addition & 0 deletions test/configCases/contenthash/include-chunk-id/chunk.js
@@ -0,0 +1 @@
module.exports = "chunk";
5 changes: 5 additions & 0 deletions test/configCases/contenthash/include-chunk-id/index.js
@@ -0,0 +1,5 @@
it("should compile and run the test", function () {});

if(Math.random() < -1) {
import(/* webpackChunkName: "chunk" */ "./chunk");
}
32 changes: 32 additions & 0 deletions test/configCases/contenthash/include-chunk-id/test.config.js
@@ -0,0 +1,32 @@
var fs = require("fs");

var findFile = function(files, regex) {
return files.find(function(file) {
if (regex.test(file)) {
return true;
}
});
};

const allFilenameHashes = new Set();
const allChunkHashes = new Set();

module.exports = {
findBundle: function(i, options) {
var files = fs.readdirSync(options.output.path);

const filename = findFile(files, new RegExp(`^bundle${i}`));
const filenameHash = /\.([a-f0-9]+)\.js$/.exec(filename)[1];
allFilenameHashes.add(filenameHash);

const chunk = findFile(files, new RegExp(`^chunk${i}`));
const chunkHash = /\.([a-f0-9]+)\.js$/.exec(chunk)[1];
allChunkHashes.add(chunkHash);

return "./" + filename;
},
afterExecute: () => {
expect(allFilenameHashes.size).toBe(2);
expect(allChunkHashes.size).toBe(2);
}
};
26 changes: 26 additions & 0 deletions test/configCases/contenthash/include-chunk-id/webpack.config.js
@@ -0,0 +1,26 @@
module.exports = [
{
mode: "production",
name: "normal-ids",
output: {
filename: "bundle0.[contenthash:6].js",
chunkFilename: "chunk0.[contenthash:6].js"
},
optimization: {
chunkIds: "size",
moduleIds: "named"
}
},
{
mode: "production",
name: "normal-ids",
output: {
filename: "bundle1.[contenthash:6].js",
chunkFilename: "chunk1.[contenthash:6].js"
},
optimization: {
chunkIds: "named",
moduleIds: "named"
}
}
];

0 comments on commit 0e60343

Please sign in to comment.