Merge pull request #3409 from babel/sourcempa
Fix sourcemap generation for ES2015 modules
This commit is contained in:
commit
bbdc308e92
@ -182,6 +182,12 @@ export default function () {
|
|||||||
).expression)
|
).expression)
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
// Copy location from the original import statement for sourcemap
|
||||||
|
// generation.
|
||||||
|
if (imports[source]) {
|
||||||
|
varDecl.loc = imports[source].loc;
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof blockHoist === "number" && blockHoist > 0) {
|
if (typeof blockHoist === "number" && blockHoist > 0) {
|
||||||
varDecl._blockHoist = blockHoist;
|
varDecl._blockHoist = blockHoist;
|
||||||
}
|
}
|
||||||
@ -215,7 +221,8 @@ export default function () {
|
|||||||
let key = path.node.source.value;
|
let key = path.node.source.value;
|
||||||
let importsEntry = imports[key] || {
|
let importsEntry = imports[key] || {
|
||||||
specifiers: [],
|
specifiers: [],
|
||||||
maxBlockHoist: 0
|
maxBlockHoist: 0,
|
||||||
|
loc: path.node.loc,
|
||||||
};
|
};
|
||||||
|
|
||||||
importsEntry.specifiers.push(...path.node.specifiers);
|
importsEntry.specifiers.push(...path.node.specifiers);
|
||||||
@ -333,9 +340,11 @@ export default function () {
|
|||||||
path.replaceWithMultiple(nodes);
|
path.replaceWithMultiple(nodes);
|
||||||
}
|
}
|
||||||
} else if (path.isExportAllDeclaration()) {
|
} else if (path.isExportAllDeclaration()) {
|
||||||
topNodes.push(buildExportAll({
|
let exportNode = buildExportAll({
|
||||||
OBJECT: addRequire(path.node.source.value, path.node._blockHoist)
|
OBJECT: addRequire(path.node.source.value, path.node._blockHoist)
|
||||||
}));
|
});
|
||||||
|
exportNode.loc = path.node.loc;
|
||||||
|
topNodes.push(exportNode);
|
||||||
path.remove();
|
path.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -405,7 +414,9 @@ export default function () {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// bare import
|
// bare import
|
||||||
topNodes.push(buildRequire(t.stringLiteral(source)));
|
let requireNode = buildRequire(t.stringLiteral(source));
|
||||||
|
requireNode.loc = imports[source].loc;
|
||||||
|
topNodes.push(requireNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,26 +4,28 @@ Object.defineProperty(exports, "__esModule", {
|
|||||||
value: true
|
value: true
|
||||||
});
|
});
|
||||||
exports.test = undefined;
|
exports.test = undefined;
|
||||||
|
/*after*/
|
||||||
|
/*before*/require("foo"); /*after*/
|
||||||
|
|
||||||
require("foo");
|
/*before*/require("foo-bar"); /*after*/
|
||||||
|
|
||||||
require("foo-bar");
|
/*before*/require("./directory/foo-bar"); /*after*/
|
||||||
|
|
||||||
require("./directory/foo-bar");
|
var /*before*/_foo = require("foo2") /*after*/;
|
||||||
|
|
||||||
var _foo = require("foo2");
|
|
||||||
|
|
||||||
|
/*before*/
|
||||||
var _foo2 = babelHelpers.interopRequireDefault(_foo);
|
var _foo2 = babelHelpers.interopRequireDefault(_foo);
|
||||||
|
|
||||||
var _foo3 = require("foo3");
|
/*after*/
|
||||||
|
var /*before*/_foo3 = require("foo3") /*after*/;
|
||||||
|
|
||||||
var /*after*/foo2 = babelHelpers.interopRequireWildcard(_foo3);
|
/*before*/var /*after*/foo2 = babelHelpers.interopRequireWildcard(_foo3);
|
||||||
/*before*/
|
|
||||||
var _foo4 = require("foo4");
|
|
||||||
|
|
||||||
var _foo5 = require("foo5");
|
var /*before*/_foo4 = require("foo4") /*after*/;
|
||||||
|
|
||||||
exports. /*after*/test = test;
|
var /*before*/_foo5 = require("foo5") /*after*/;
|
||||||
|
|
||||||
|
/*before*/exports. /*after*/test = test;
|
||||||
var test = /*before*/exports. /*after*/test = 5;
|
var test = /*before*/exports. /*after*/test = 5;
|
||||||
|
|
||||||
/*before*/(0, _foo4.bar) /*after*/( /*before*/_foo2.default /*after*/, /*before*/_foo5.foo /*after*/);
|
/*before*/(0, _foo4.bar) /*after*/( /*before*/_foo2.default /*after*/, /*before*/_foo5.foo /*after*/);
|
||||||
|
|||||||
36
packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/source-map/exec.js
vendored
Normal file
36
packages/babel-plugin-transform-es2015-modules-commonjs/test/fixtures/source-map/exec.js
vendored
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
var tests = [
|
||||||
|
'import "foo";',
|
||||||
|
'import foo from "foo";',
|
||||||
|
'import {default as foo2} from "foo";',
|
||||||
|
'import * as foo from "foo";',
|
||||||
|
'import {bar} from "foo";',
|
||||||
|
'import {bar2, baz} from "foo";',
|
||||||
|
'import {bar as baz2} from "foo";',
|
||||||
|
'import {bar as baz3, xyz} from "foo";',
|
||||||
|
'import bar, * as bar2 from "foo";',
|
||||||
|
'import bar, {bar2, bar3 as bar4} from "foo";',
|
||||||
|
|
||||||
|
'export var a;',
|
||||||
|
'export default function(){};',
|
||||||
|
'export default function f(){};',
|
||||||
|
'export default 42;',
|
||||||
|
'export {foo};',
|
||||||
|
'export { foo as default };',
|
||||||
|
'export * from "foo";',
|
||||||
|
'export {foo} from "foo";',
|
||||||
|
'export {default as foo} from "foo";',
|
||||||
|
];
|
||||||
|
|
||||||
|
tests.forEach(function (code) {
|
||||||
|
var res = transform(code, {
|
||||||
|
sourceMap: true,
|
||||||
|
plugins: opts.plugins
|
||||||
|
});
|
||||||
|
|
||||||
|
// Should create mapping
|
||||||
|
assert.notEqual(
|
||||||
|
res.map.mappings,
|
||||||
|
'',
|
||||||
|
'expected to generate sourcemap for: ' + code
|
||||||
|
);
|
||||||
|
});
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"plugins": ["external-helpers", "transform-es2015-modules-commonjs"]
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user