Merge pull request #7921 from webpack/bugfix/contenhash-id

chunk ids contribute to contenthash for javascript
This commit is contained in:
Tobias Koppers 2018-08-20 10:36:02 +02:00 committed by GitHub
commit 0e60343dca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 66 additions and 0 deletions

View File

@ -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") {

View File

@ -0,0 +1 @@
module.exports = "chunk";

View File

@ -0,0 +1,5 @@
it("should compile and run the test", function () {});
if(Math.random() < -1) {
import(/* webpackChunkName: "chunk" */ "./chunk");
}

View File

@ -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);
}
};

View File

@ -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"
}
}
];