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)
|
||||
]);
|
||||
|
||||
// Copy location from the original import statement for sourcemap
|
||||
// generation.
|
||||
if (imports[source]) {
|
||||
varDecl.loc = imports[source].loc;
|
||||
}
|
||||
|
||||
if (typeof blockHoist === "number" && blockHoist > 0) {
|
||||
varDecl._blockHoist = blockHoist;
|
||||
}
|
||||
@ -215,7 +221,8 @@ export default function () {
|
||||
let key = path.node.source.value;
|
||||
let importsEntry = imports[key] || {
|
||||
specifiers: [],
|
||||
maxBlockHoist: 0
|
||||
maxBlockHoist: 0,
|
||||
loc: path.node.loc,
|
||||
};
|
||||
|
||||
importsEntry.specifiers.push(...path.node.specifiers);
|
||||
@ -333,9 +340,11 @@ export default function () {
|
||||
path.replaceWithMultiple(nodes);
|
||||
}
|
||||
} else if (path.isExportAllDeclaration()) {
|
||||
topNodes.push(buildExportAll({
|
||||
let exportNode = buildExportAll({
|
||||
OBJECT: addRequire(path.node.source.value, path.node._blockHoist)
|
||||
}));
|
||||
});
|
||||
exportNode.loc = path.node.loc;
|
||||
topNodes.push(exportNode);
|
||||
path.remove();
|
||||
}
|
||||
}
|
||||
@ -405,7 +414,9 @@ export default function () {
|
||||
}
|
||||
} else {
|
||||
// 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
|
||||
});
|
||||
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 _foo = require("foo2");
|
||||
var /*before*/_foo = require("foo2") /*after*/;
|
||||
|
||||
/*before*/
|
||||
var _foo2 = babelHelpers.interopRequireDefault(_foo);
|
||||
|
||||
var _foo3 = require("foo3");
|
||||
/*after*/
|
||||
var /*before*/_foo3 = require("foo3") /*after*/;
|
||||
|
||||
var /*after*/foo2 = babelHelpers.interopRequireWildcard(_foo3);
|
||||
/*before*/
|
||||
var _foo4 = require("foo4");
|
||||
/*before*/var /*after*/foo2 = babelHelpers.interopRequireWildcard(_foo3);
|
||||
|
||||
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;
|
||||
|
||||
/*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