added [chunkhash] support, fixes #90
This commit is contained in:
parent
1133a5606e
commit
6af5702c44
|
@ -528,7 +528,11 @@ Compilation.prototype.createChunkAssets = function createChunkAssets() {
|
|||
var i, chunk;
|
||||
for(i = 0; i < this.chunks.length; i++) {
|
||||
var chunk = this.chunks[i];
|
||||
chunk.updateHash(hash);
|
||||
var chunkHash = new (require("crypto").Hash)("md5");
|
||||
chunk.updateHash(chunkHash);
|
||||
this.chunkTemplate.updateHash(chunkHash);
|
||||
chunk.hash = chunkHash.digest("hex");
|
||||
hash.update(chunk.hash);
|
||||
}
|
||||
this.hash = hash = hash.digest("hex");
|
||||
for(i = 0; i < this.modules.length; i++) {
|
||||
|
@ -544,6 +548,7 @@ Compilation.prototype.createChunkAssets = function createChunkAssets() {
|
|||
for(i = 0; i < this.chunks.length; i++) {
|
||||
chunk = this.chunks[i];
|
||||
chunk.files = [];
|
||||
var chunkHash = chunk.hash;
|
||||
var source;
|
||||
var file;
|
||||
if(chunk.entry) {
|
||||
|
@ -561,18 +566,13 @@ Compilation.prototype.createChunkAssets = function createChunkAssets() {
|
|||
this.assets[
|
||||
file = filename
|
||||
.replace(Template.REGEXP_HASH, hash)
|
||||
.replace(Template.REGEXP_CHUNKHASH, chunkHash)
|
||||
.replace(Template.REGEXP_ID, chunk.id)
|
||||
.replace(Template.REGEXP_NAME, chunk.name || "")
|
||||
] = source;
|
||||
chunk.files.push(file);
|
||||
this.applyPlugins("chunk-asset", chunk, file);
|
||||
} else {
|
||||
if(this.cache) {
|
||||
var chunkHash = new (require("crypto").Hash)("md5");
|
||||
chunk.updateHash(chunkHash);
|
||||
this.chunkTemplate.updateHash(chunkHash);
|
||||
chunkHash = chunkHash.digest("hex");
|
||||
}
|
||||
if(this.cache && this.cache["c" + chunk.id] && this.cache["c" + chunk.id].hash == chunkHash) {
|
||||
source = this.cache["c" + chunk.id].source;
|
||||
} else {
|
||||
|
@ -587,6 +587,7 @@ Compilation.prototype.createChunkAssets = function createChunkAssets() {
|
|||
this.assets[
|
||||
file = chunkFilename
|
||||
.replace(Template.REGEXP_HASH, hash)
|
||||
.replace(Template.REGEXP_CHUNKHASH, chunkHash)
|
||||
.replace(Template.REGEXP_ID, chunk.id)
|
||||
] = source;
|
||||
chunk.files.push(file);
|
||||
|
@ -594,6 +595,7 @@ Compilation.prototype.createChunkAssets = function createChunkAssets() {
|
|||
if(namedChunkFilename && chunk.name) {
|
||||
this.assets[
|
||||
file = namedChunkFilename
|
||||
.replace(Template.REGEXP_CHUNKHASH, chunkHash)
|
||||
.replace(Template.REGEXP_HASH, hash)
|
||||
.replace(Template.REGEXP_ID, chunk.id)
|
||||
.replace(Template.REGEXP_NAME, chunk.name || "")
|
||||
|
|
|
@ -29,6 +29,13 @@ JsonpMainTemplate.prototype.renderLocalVars = function(hash, chunk) {
|
|||
JsonpMainTemplate.prototype.renderRequireEnsure = function(hash, chunk) {
|
||||
var filename = this.outputOptions.filename || "bundle.js";
|
||||
var chunkFilename = this.outputOptions.chunkFilename || "[id]." + filename;
|
||||
var chunkHashMap = {};
|
||||
(function addChunk(c) {
|
||||
if(chunkHashMap[c.id]) return;
|
||||
if(c.id > 0)
|
||||
chunkHashMap[c.id] = c.hash;
|
||||
c.chunks.forEach(addChunk);
|
||||
}(chunk));
|
||||
return [
|
||||
"// \"0\" is the signal for \"already loaded\"",
|
||||
"if(installedChunks[chunkId] === 0)",
|
||||
|
@ -49,6 +56,7 @@ JsonpMainTemplate.prototype.renderRequireEnsure = function(hash, chunk) {
|
|||
JSON.stringify(chunkFilename
|
||||
.replace(Template.REGEXP_HASH, hash)
|
||||
.replace(Template.REGEXP_NAME, ""))
|
||||
.replace(Template.REGEXP_CHUNKHASH, "\" + " + JSON.stringify(chunkHashMap) + "[chunkId] + \"")
|
||||
.replace(Template.REGEXP_ID, "\" + chunkId + \"") + ";",
|
||||
"head.appendChild(script);"
|
||||
]),
|
||||
|
|
|
@ -8,6 +8,7 @@ function Template(outputOptions) {
|
|||
module.exports = Template;
|
||||
|
||||
Template.REGEXP_HASH = /\[hash\]/gi;
|
||||
Template.REGEXP_CHUNKHASH = /\[chunkhash\]/gi;
|
||||
Template.REGEXP_NAME = /\[name\]/gi;
|
||||
Template.REGEXP_ID = /\[id\]/gi;
|
||||
Template.REGEXP_FILE = /\[file\]/gi;
|
||||
|
|
|
@ -40,7 +40,7 @@ library1.on("exit", function(code) {
|
|||
bindOutput(main);
|
||||
}
|
||||
});
|
||||
// node ../../bin/webpack --output-pathinfo --colors --output-library library2 --output-public-path js/ --config library2config.js library2b library2 js/library2.js
|
||||
// node ../../bin/webpack --output-pathinfo --colors --output-library library2 --output-public-path js/ --output-chunk-file [chunkhash].lib2.js --config library2config.js library2b library2 js/library2.js
|
||||
var library2 = cp.spawn("node", join(["../../bin/webpack.js", "--output-pathinfo", "--colors", "--output-library", "library2",
|
||||
"--output-public-path", "js/", "--config", "library2config.js", "library2b", "library2", "js/library2.js"], extraArgsNoWatch));
|
||||
"--output-public-path", "js/", "--output-chunk-file", "[chunkhash].lib2.js", "--config", "library2config.js", "library2b", "library2", "js/library2.js"], extraArgsNoWatch));
|
||||
bindOutput(library2);
|
||||
|
|
Loading…
Reference in New Issue