Skip to content

Commit

Permalink
fix: source maps path on windows.
Browse files Browse the repository at this point in the history
  • Loading branch information
evilebottnawi committed May 12, 2017
1 parent fe4cf7a commit 86332ba
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 15 deletions.
15 changes: 11 additions & 4 deletions lib/loader.js
Expand Up @@ -22,6 +22,13 @@ module.exports = function(content, map) {
if(sourceMap) {
if (map && typeof map !== "string") {
map = JSON.stringify(map);

if (map.sources) {
map.sources = map.sources.map(function (source) {
return source.replace(/\\/g, '/');
});
map.sourceRoot = '';
}
}
} else {
// Some loaders (example `"postcss-loader": "1.x.x"`) always generates source map, we should remove it
Expand All @@ -30,8 +37,8 @@ module.exports = function(content, map) {

processCss(content, map, {
mode: moduleMode ? "local" : "global",
from: loaderUtils.getRemainingRequest(this),
to: loaderUtils.getCurrentRequest(this),
from: loaderUtils.getRemainingRequest(this).split("!").pop(),
to: loaderUtils.getCurrentRequest(this).split("!").pop(),
query: query,
minimize: this.minimize,
loaderContext: this,
Expand Down Expand Up @@ -105,11 +112,11 @@ module.exports = function(content, map) {
map = result.map;
if(map.sources) {
map.sources = map.sources.map(function(source) {
return source.split("!").pop();
return source.split("!").pop().replace(/\\/g, '/');
}, this);
map.sourceRoot = "";
}
map.file = map.file.split("!").pop();
map.file = map.file.split("!").pop().replace(/\\/g, '/');
map = JSON.stringify(map);
moduleJs = "exports.push([module.id, " + cssAsString + ", \"\", " + map + "]);";
} else {
Expand Down
82 changes: 71 additions & 11 deletions test/sourceMapTest.js
Expand Up @@ -10,22 +10,48 @@ describe("source maps", function() {
testWithMap("falsy: undefined map doesn't cause an error", ".class { a: b c d; }", undefined, [
[1, ".class { a: b c d; }", ""]
]);
testWithMap("should don't generate sourceMap when `sourceMap: false` and map exist",
testWithMap("should don't generate sourceMap when `sourceMap: false` and map exist",
".class { a: b c d; }",
{
file: 'test.css',
mappings: 'AAAA,SAAS,SAAS,EAAE',
names: [],
sourceRoot: '',
sources: [ '/folder/test.css' ],
sourcesContent: [ '.class { a: b c d; }' ],
version: 3
},
{
file: 'test.css',
mappings: 'AAAA,SAAS,SAAS,EAAE',
names: [],
sourceRoot: '',
sources: [ '/folder/test.css' ],
sourcesContent: [ '.class { a: b c d; }' ],
version: 3
},
[
[1, ".class { a: b c d; }", ""]
],
{
query: "?sourceMap=false"
sourceMap: false
}
);
testWithMap("generate sourceMap when `sourceMap: true` and map exist",
".class { a: b c d; }",
{
file: "test.css",
mappings: "AAAA,SAAS,SAAS,EAAE",
names: [],
sourceRoot: "",
sources: [ "/folder/test.css" ],
sourcesContent: [ ".class { a: b c d; }" ],
version: 3
},
[
[1, ".class { a: b c d; }", "", {
file: "test.css",
mappings: "AAAA,SAAS,SAAS,EAAE",
names: [],
sourceRoot: "",
sources: [ "/folder/test.css" ],
sourcesContent: [ ".class { a: b c d; }" ],
version: 3
}]
],
{
sourceMap: true
}
);
testMap("generate sourceMap (1 loader)", ".class { a: b c d; }", undefined, {
Expand All @@ -45,6 +71,23 @@ describe("source maps", function() {
version: 3
}]
]);
testMap("generate sourceMap (1 loader) with backslash (windows)", ".class { a: b c d; }", undefined, {
loaders: [{request: "C:\\path\\css-loader"}],
options: { context: "\\" },
resource: "C:\\folder\\test.css",
request: "C:\\path\\css-loader!C:\\folder\\test.css",
query: "?sourceMap"
}, [
[1, ".class { a: b c d; }", "", {
file: 'C:/folder/test.css',
mappings: 'AAAA,SAAS,SAAS,EAAE',
names: [],
sourceRoot: '',
sources: [ 'C:/folder/test.css' ],
sourcesContent: [ '.class { a: b c d; }' ],
version: 3
}]
]);
testMap("generate sourceMap (1 loader, relative)", ".class { a: b c d; }", undefined, {
loaders: [{request: "/path/css-loader"}],
options: { context: "/other-folder/sub" },
Expand Down Expand Up @@ -113,6 +156,23 @@ describe("source maps", function() {
version: 3
}]
]);
testMap("generate sourceMap (2 loaders) with backslash (windows)", ".class { a: b c d; }", undefined, {
loaders: [{request: "C:\\path\\css-loader"}, {request: "C:\\path\\sass-loader"}],
options: { context: "\\" },
resource: "C:\\folder\\test.scss",
request: "C:\\path\\css-loader!C:\\path\\sass-loader!C:\\folder\\test.scss",
query: "?sourceMap"
}, [
[1, ".class { a: b c d; }", "", {
file: 'C:/folder/test.scss',
mappings: 'AAAA,SAAS,SAAS,EAAE',
names: [],
sourceRoot: '',
sources: [ 'C:/folder/test.scss' ],
sourcesContent: [ '.class { a: b c d; }' ],
version: 3
}]
]);
testMap("don't generate sourceMap (1 loader)", ".class { a: b c d; }", undefined, {
loaders: [{request: "/path/css-loader"}],
options: { context: "/" },
Expand Down

0 comments on commit 86332ba

Please sign in to comment.