Fixed caching

This commit is contained in:
Tobias Koppers 2013-07-04 11:55:37 +02:00
parent d85324c9fd
commit b5b672233f
3 changed files with 19 additions and 5 deletions

View File

@ -21,6 +21,13 @@ SourceMapDevToolPlugin.prototype.apply = function(compiler) {
chunks.forEach(function(chunk) {
chunk.files.slice().forEach(function(file) {
var asset = this.assets[file];
if(asset.__SourceMapDevTool_Data) {
var data = asset.__SourceMapDevTool_Data;
for(var file in data) {
this.assets[file] = data[file];
}
return;
}
var sourceMap = asset.map();
if(sourceMap) {
for(var i = 0; i < sourceMap.sources.length; i++) {
@ -40,17 +47,18 @@ SourceMapDevToolPlugin.prototype.apply = function(compiler) {
sourceMap.sources[i] = str;
}
sourceMap.sourceRoot = "webpack-module://";
asset.__SourceMapDevTool_Data = {};
if(sourceMapFilename) {
var sourceMapFile = sourceMapFilename
.replace(Template.REGEXP_FILE, file)
.replace(Template.REGEXP_FILEBASE, basename(file))
.replace(Template.REGEXP_HASH, this.hash)
.replace(Template.REGEXP_ID, chunk.id);
this.assets[file] = new ConcatSource(asset, "\n/*\n//@ sourceMappingURL=" + sourceMapFile + "\n*/");
this.assets[sourceMapFile] = new RawSource(JSON.stringify(sourceMap));
asset.__SourceMapDevTool_Data[file] = this.assets[file] = new ConcatSource(asset, "\n/*\n//@ sourceMappingURL=" + sourceMapFile + "\n*/");
asset.__SourceMapDevTool_Data[sourceMapFile] = this.assets[sourceMapFile] = new RawSource(JSON.stringify(sourceMap));
chunk.files.push(sourceMapFile);
} else {
this.assets[file] = new ConcatSource(asset, "\n/*\n//@ sourceMappingURL=data:application/json;base64," + base64Encode(JSON.stringify(sourceMap)) + "\n*/");
asset.__SourceMapDevTool_Data[file] = this.assets[file] = new ConcatSource(asset, "\n/*\n//@ sourceMappingURL=data:application/json;base64," + base64Encode(JSON.stringify(sourceMap)) + "\n*/");
}
}
}, this);

View File

@ -30,7 +30,12 @@ UglifyJsPlugin.prototype.apply = function(compiler) {
});
files.forEach(function(file) {
try {
var input = compilation.assets[file].source();
var asset = compilation.assets[file];
var input = asset.source();
if(asset.__UglifyJsPlugin) {
compilation.assets[file] = asset.__UglifyJsPlugin;
return;
}
var inputSourceMap = compilation.assets[file].map();
var ast = uglify.parse(input, {
filename: file
@ -56,7 +61,7 @@ UglifyJsPlugin.prototype.apply = function(compiler) {
ast.print(stream);
map = map + "";
stream = stream + "";
compilation.assets[file] = new SourceMapSource(stream, file, map, input, inputSourceMap);
asset.__UglifyJsPlugin = compilation.assets[file] = new SourceMapSource(stream, file, map, input, inputSourceMap);
} catch(err) {
err.file = file;
compilation.warnings.push(err);

View File

@ -30,6 +30,7 @@ app.configure(function() {
dedupe: true
},
hot: true,
cache: true,
recordsPath: path.join(__dirname, "webpack.records.json"),
output: {
publicPath: "http://localhost:8080/js/",