Skip to content

Commit

Permalink
support [name] in chunkFilename
Browse files Browse the repository at this point in the history
fixes #358
  • Loading branch information
sokra committed Jul 16, 2014
1 parent 53c3858 commit 03c87c1
Show file tree
Hide file tree
Showing 10 changed files with 23 additions and 16 deletions.
2 changes: 1 addition & 1 deletion lib/AmdMainTemplatePlugin.js
Expand Up @@ -25,7 +25,7 @@ AmdMainTemplatePlugin.prototype.apply = function(mainTemplate) {
.replace(Template.REGEXP_HASH, hash)
.replace(Template.REGEXP_CHUNKHASH, chunk.renderedHash)
.replace(Template.REGEXP_ID, chunk.id)
.replace(Template.REGEXP_NAME, chunk.name || "");
.replace(Template.REGEXP_NAME, chunk.name || chunk.id);
return new ConcatSource("define(" + JSON.stringify(name) + ", " + externalsDepsArray + ", function(" + externalsArguments + ") { return ", source, "});");
} else if(externalsArguments) {
return new ConcatSource("define(" + externalsDepsArray + ", function(" + externalsArguments + ") { return ", source, "});");
Expand Down
6 changes: 3 additions & 3 deletions lib/Compilation.js
Expand Up @@ -651,7 +651,7 @@ Compilation.prototype.modifyHash = function modifyHash(update) {
Compilation.prototype.createChunkAssets = function createChunkAssets() {
var outputOptions = this.outputOptions;
var filename = outputOptions.filename || "bundle.js";
var chunkFilename = outputOptions.chunkFilename || "[id]." + filename.replace(Template.REGEXP_NAME, "");
var chunkFilename = outputOptions.chunkFilename || "[id]." + filename;
var namedChunkFilename = outputOptions.namedChunkFilename || null;
for(var i = 0; i < this.modules.length; i++) {
var module = this.modules[i];
Expand Down Expand Up @@ -693,7 +693,7 @@ Compilation.prototype.createChunkAssets = function createChunkAssets() {
.replace(Template.REGEXP_HASH, this.hash)
.replace(Template.REGEXP_CHUNKHASH, chunk.renderedHash)
.replace(Template.REGEXP_ID, chunk.id)
.replace(Template.REGEXP_NAME, chunk.name || "")
.replace(Template.REGEXP_NAME, chunk.name || chunk.id)
] = source;
chunk.files.push(file);
this.applyPlugins("chunk-asset", chunk, file);
Expand All @@ -703,7 +703,7 @@ Compilation.prototype.createChunkAssets = function createChunkAssets() {
.replace(Template.REGEXP_CHUNKHASH, chunk.renderedHash)
.replace(Template.REGEXP_HASH, this.hash)
.replace(Template.REGEXP_ID, chunk.id)
.replace(Template.REGEXP_NAME, chunk.name || "")
.replace(Template.REGEXP_NAME, chunk.name || chunk.id)
] = source;
chunk.files.push(file);
this.applyPlugins("chunk-asset", chunk, file);
Expand Down
2 changes: 1 addition & 1 deletion lib/JsonpExportMainTemplatePlugin.js
Expand Up @@ -15,7 +15,7 @@ JsonpExportMainTemplatePlugin.prototype.apply = function(mainTemplate) {
.replace(Template.REGEXP_HASH, hash)
.replace(Template.REGEXP_CHUNKHASH, chunk.renderedHash)
.replace(Template.REGEXP_ID, chunk.id)
.replace(Template.REGEXP_NAME, chunk.name || "");
.replace(Template.REGEXP_NAME, chunk.name || chunk.id);
return new ConcatSource(name + "(", source, ");");
}.bind(this));
mainTemplate.plugin("global-hash", function(chunk) {
Expand Down
5 changes: 4 additions & 1 deletion lib/JsonpMainTemplatePlugin.js
Expand Up @@ -33,12 +33,14 @@ JsonpMainTemplatePlugin.prototype.apply = function(mainTemplate) {
var filename = this.outputOptions.filename || "bundle.js";
var chunkFilename = this.outputOptions.chunkFilename || "[id]." + filename;
var chunkHashMap = {};
var chunkNameMap = {};
(function addChunk(c) {
if(c.id in chunkHashMap) return;
if(c.entry)
chunkHashMap[c.id] = undefined;
else
chunkHashMap[c.id] = c.renderedHash;
chunkNameMap[c.id] = c.name || c.id;
c.chunks.forEach(addChunk);
}(chunk));
return this.asString([
Expand All @@ -58,9 +60,10 @@ JsonpMainTemplatePlugin.prototype.apply = function(mainTemplate) {
"script.type = 'text/javascript';",
"script.charset = 'utf-8';",
"script.src = " + this.requireFn + ".p + " +
JSON.stringify(chunkFilename.replace(Template.REGEXP_NAME, ""))
JSON.stringify(chunkFilename)
.replace(Template.REGEXP_HASH, "\" + " + this.renderCurrentHashCode(hash) + " + \"")
.replace(Template.REGEXP_CHUNKHASH, "\" + " + JSON.stringify(chunkHashMap) + "[chunkId] + \"")
.replace(Template.REGEXP_NAME, "\" + " + JSON.stringify(chunkNameMap) + "[chunkId] + \"")
.replace(Template.REGEXP_ID, "\" + chunkId + \"") + ";",
"head.appendChild(script);"
]),
Expand Down
6 changes: 3 additions & 3 deletions lib/MainTemplate.js
Expand Up @@ -94,11 +94,11 @@ function MainTemplate(outputOptions) {
var publicPath = this.outputOptions.publicPath || "";
var filename = this.outputOptions.filename || "";
var chunkFilename = this.outputOptions.chunkFilename || "";
if(Template.REGEXP_HASH.test(publicPath) || Template.REGEXP_CHUNKHASH.test(publicPath))
if(Template.REGEXP_HASH.test(publicPath) || Template.REGEXP_CHUNKHASH.test(publicPath) || Template.REGEXP_NAME.test(publicPath))
return true;
if(Template.REGEXP_HASH.test(filename) || Template.REGEXP_CHUNKHASH.test(filename))
if(Template.REGEXP_HASH.test(filename) || Template.REGEXP_CHUNKHASH.test(filename) || Template.REGEXP_NAME.test(filename))
return true;
if(Template.REGEXP_HASH.test(chunkFilename) || Template.REGEXP_CHUNKHASH.test(chunkFilename))
if(Template.REGEXP_HASH.test(chunkFilename) || Template.REGEXP_CHUNKHASH.test(chunkFilename) || Template.REGEXP_NAME.test(chunkFilename))
return true;
});
}
Expand Down
2 changes: 1 addition & 1 deletion lib/SetVarMainTemplatePlugin.js
Expand Up @@ -16,7 +16,7 @@ SetVarMainTemplatePlugin.prototype.apply = function(mainTemplate) {
.replace(Template.REGEXP_HASH, hash)
.replace(Template.REGEXP_CHUNKHASH, chunk.renderedHash)
.replace(Template.REGEXP_ID, chunk.id)
.replace(Template.REGEXP_NAME, chunk.name || "");
.replace(Template.REGEXP_NAME, chunk.name || chunk.id);
if(this.copyObject) {
return new ConcatSource("(function(e, a) { for(var i in a) e[i] = a[i]; }(" +
varExpression + ", ", source, "))");
Expand Down
2 changes: 1 addition & 1 deletion lib/UmdMainTemplatePlugin.js
Expand Up @@ -35,7 +35,7 @@ UmdMainTemplatePlugin.prototype.apply = function(mainTemplate) {
.replace(Template.REGEXP_HASH, hash)
.replace(Template.REGEXP_CHUNKHASH, chunk.renderedHash)
.replace(Template.REGEXP_ID, chunk.id)
.replace(Template.REGEXP_NAME, chunk.name || ""));
.replace(Template.REGEXP_NAME, chunk.name || chunk.id));
}
function externalsDepsArray() {
return "[" + replaceKeys(externals.map(function(m) {
Expand Down
6 changes: 4 additions & 2 deletions lib/node/NodeMainTemplatePlugin.js
Expand Up @@ -45,7 +45,8 @@ NodeMainTemplatePlugin.prototype.apply = function(mainTemplate) {
"installedChunks[chunkId] = [callback];",
"var filename = __dirname + " + JSON.stringify("/" + chunkFilename
.replace(Template.REGEXP_HASH, hash)
.replace(Template.REGEXP_NAME, ""))
.replace(Template.REGEXP_NAME, "(not implemented)")
.replace(Template.REGEXP_CHUNKHASH, "(not implemented)"))
.replace(Template.REGEXP_ID, "\" + chunkId + \"") + ";",
"require('fs').readFile(filename, 'utf-8', function(err, content) {",
this.indent([
Expand Down Expand Up @@ -79,7 +80,8 @@ NodeMainTemplatePlugin.prototype.apply = function(mainTemplate) {
"var chunk = require(" +
JSON.stringify("./" + chunkFilename
.replace(Template.REGEXP_HASH, hash)
.replace(Template.REGEXP_NAME, ""))
.replace(Template.REGEXP_NAME, "(not implemented)")
.replace(Template.REGEXP_CHUNKHASH, "(not implemented)"))
.replace(Template.REGEXP_ID, "\" + chunkId + \"") + ");"
].concat(insertMoreModules).concat([
"for(var i = 0; i < chunkIds.length; i++)",
Expand Down
3 changes: 2 additions & 1 deletion lib/webworker/WebWorkerMainTemplatePlugin.js
Expand Up @@ -36,7 +36,8 @@ WebWorkerMainTemplatePlugin.prototype.apply = function(mainTemplate) {
this.indent([
"importScripts(" +
JSON.stringify(chunkFilename
.replace(Template.REGEXP_NAME, ""))
.replace(Template.REGEXP_NAME, "(not implemented)")
.replace(Template.REGEXP_CHUNKHASH, "(not implemented)"))
.replace(Template.REGEXP_HASH, "\" + " + this.renderCurrentHashCode(hash) + " + \"")
.replace(Template.REGEXP_ID, "\" + chunkId + \"") + ");"
]),
Expand Down
5 changes: 3 additions & 2 deletions test/browsertest/build.js
Expand Up @@ -34,9 +34,10 @@ var library1 = cp.spawn("node", join(["../../bin/webpack.js", "--output-pathinfo
bindOutput(library1);
library1.on("exit", function(code) {
if(code === 0) {
// node ../../bin/webpack --output-pathinfo --colors --resolve-alias vm=vm-browserify --output-public-path js/ --module-bind json --module-bind css=style!css --module-bind less=style!css!less --module-bind coffee --module-bind jade --prefetch ./lib/stylesheet.less --optimize-dedupe --labeled-modules ./lib/index "js/web.js?h=[hash]"
// node ../../bin/webpack --output-pathinfo --colors --resolve-alias vm=vm-browserify --output-public-path js/ --output-chunk-file [name].web.js --module-bind json --module-bind css=style!css --module-bind less=style!css!less --module-bind coffee --module-bind jade --prefetch ./lib/stylesheet.less --optimize-dedupe --labeled-modules ./lib/index "js/web.js?h=[hash]"
var main = cp.spawn("node", join(["../../bin/webpack.js", "--output-pathinfo", "--colors", "--resolve-alias", "vm=vm-browserify", "--workers",
"--output-public-path", "js/", "--module-bind", "json", "--module-bind", "css=style!css", "--module-bind", "less=style/url!file?postfix=.css&string!less", "--module-bind", "coffee", "--module-bind", "jade", "--prefetch", "./lib/stylesheet.less", "--optimize-dedupe", "--labeled-modules", "./lib/index", "js/web.js?h=[hash]", "--progress"], extraArgs));
"--output-public-path", "js/", "--output-chunk-file", "[name].web.js",
"--module-bind", "json", "--module-bind", "css=style!css", "--module-bind", "less=style/url!file?postfix=.css&string!less", "--module-bind", "coffee", "--module-bind", "jade", "--prefetch", "./lib/stylesheet.less", "--optimize-dedupe", "--labeled-modules", "./lib/index", "js/web.js?h=[hash]", "--progress"], extraArgs));
bindOutput(main);
}
});
Expand Down

0 comments on commit 03c87c1

Please sign in to comment.