Skip to content

Commit 572ebfc

Browse files
committed
use correct (relative) url to source map
1 parent 6c50e7c commit 572ebfc

File tree

6 files changed

+35
-4
lines changed

6 files changed

+35
-4
lines changed

lib/SourceMapDevToolPlugin.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
MIT License http://www.opensource.org/licenses/mit-license.php
33
Author Tobias Koppers @sokra
44
*/
5+
var path = require("path");
56
var RequestShortener = require("./RequestShortener");
67
var Template = require("./Template");
78
var ConcatSource = require("webpack-core/lib/ConcatSource");
@@ -64,7 +65,8 @@ SourceMapDevToolPlugin.prototype.apply = function(compiler) {
6465
.replace(Template.REGEXP_FILEBASE, basename(filename))
6566
.replace(Template.REGEXP_HASH, this.hash)
6667
.replace(Template.REGEXP_ID, chunk.id);
67-
asset.__SourceMapDevTool_Data[file] = this.assets[file] = new ConcatSource(asset, sourceMappingURLComment.replace(/\[url\]/g, sourceMapFile));
68+
var sourceMapUrl = path.relative(path.dirname(file), sourceMapFile).replace(/\\/g, "/");
69+
asset.__SourceMapDevTool_Data[file] = this.assets[file] = new ConcatSource(asset, sourceMappingURLComment.replace(/\[url\]/g, sourceMapUrl));
6870
asset.__SourceMapDevTool_Data[sourceMapFile] = this.assets[sourceMapFile] = new RawSource(JSON.stringify(sourceMap));
6971
chunk.files.push(sourceMapFile);
7072
} else {
@@ -81,3 +83,4 @@ function basename(name) {
8183
if(name.indexOf("/") < 0) return name;
8284
return name.substr(name.lastIndexOf("/")+1);
8385
}
86+

lib/node/NodeMainTemplatePlugin.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ NodeMainTemplatePlugin.prototype.apply = function(mainTemplate) {
5151
this.indent([
5252
"if(err) { if(" + this.requireFn + ".onError) return " + this.requireFn + ".onError(err); else throw err; }",
5353
"var chunk = {};",
54-
"require('vm').runInThisContext('(function(exports) {' + content + '\\n})', filename)(chunk);",
54+
"require('vm').runInThisContext('(function(exports, require, __dirname, __filename) {' + content + '\\n})', filename)" +
55+
"(chunk, require, require('path').dirname(filename), filename);",
5556
].concat(insertMoreModules).concat([
5657
"var callbacks = [];",
5758
"for(var i = 0; i < chunkIds.length; i++) {",

test/ConfigTestCases.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ describe("ConfigTestCases", function() {
5252
function _require(module) {
5353
if(module.substr(0, 2) === "./") {
5454
var p = path.join(outputDirectory, module);
55-
var fn = vm.runInThisContext("(function(require, module, exports, __dirname, it) {" + fs.readFileSync(p, "utf-8") + "\n})", p);
55+
var fn = vm.runInThisContext("(function(require, module, exports, __dirname, __filename, it) {" + fs.readFileSync(p, "utf-8") + "\n})", p);
5656
var module = { exports: {} };
57-
fn.call(module.exports, _require, module, module.exports, outputDirectory, _it);
57+
fn.call(module.exports, _require, module, module.exports, outputDirectory, p, _it);
5858
return module.exports;
5959
} else return require(module);
6060
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
it("should have a relative url to the source-map", function() {
2+
var fs = require("fs");
3+
var source = fs.readFileSync(__filename, "utf-8");
4+
var match = /sourceMappingURL\s*=\s*(.*)/.exec(source);
5+
match[1].should.be.eql("bundle0.js.map");
6+
});
7+
8+
it("should have a relative url to the source-map with prefix", function(done) {
9+
require.ensure([], function(require) {
10+
require("./test.js");
11+
done();
12+
});
13+
});
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
var fs = require("fs");
2+
var source = fs.readFileSync(__filename, "utf-8");
3+
var match = /sourceMappingURL\s*=\s*(.*)/.exec(source);
4+
match[1].should.be.eql("c.js.map");
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module.exports = {
2+
output: {
3+
chunkFilename: "js/chunks/c.js"
4+
},
5+
node: {
6+
__dirname: false,
7+
__filename: false
8+
},
9+
devtool: "source-map"
10+
};

0 commit comments

Comments
 (0)