diff --git a/packages/babel-plugin-transform-modules-systemjs/src/index.js b/packages/babel-plugin-transform-modules-systemjs/src/index.js index b76a6d4648..5dae63d7b5 100644 --- a/packages/babel-plugin-transform-modules-systemjs/src/index.js +++ b/packages/babel-plugin-transform-modules-systemjs/src/index.js @@ -74,34 +74,36 @@ function constructExportCall( stringSpecifiers: Set, ) { const statements = []; - if (exportNames.length === 1) { - statements.push( - t.expressionStatement( - t.callExpression(exportIdent, [ - t.stringLiteral(exportNames[0]), - exportValues[0], - ]), - ), - ); - } else if (!exportStarTarget) { - const objectProperties = []; - for (let i = 0; i < exportNames.length; i++) { - const exportName = exportNames[i]; - const exportValue = exportValues[i]; - objectProperties.push( - t.objectProperty( - stringSpecifiers.has(exportName) - ? t.stringLiteral(exportName) - : t.identifier(exportName), - exportValue, + if (!exportStarTarget) { + if (exportNames.length === 1) { + statements.push( + t.expressionStatement( + t.callExpression(exportIdent, [ + t.stringLiteral(exportNames[0]), + exportValues[0], + ]), + ), + ); + } else { + const objectProperties = []; + for (let i = 0; i < exportNames.length; i++) { + const exportName = exportNames[i]; + const exportValue = exportValues[i]; + objectProperties.push( + t.objectProperty( + stringSpecifiers.has(exportName) + ? t.stringLiteral(exportName) + : t.identifier(exportName), + exportValue, + ), + ); + } + statements.push( + t.expressionStatement( + t.callExpression(exportIdent, [t.objectExpression(objectProperties)]), ), ); } - statements.push( - t.expressionStatement( - t.callExpression(exportIdent, [t.objectExpression(objectProperties)]), - ), - ); } else { const exportObj = path.scope.generateUid("exportObj"); diff --git a/packages/babel-plugin-transform-modules-systemjs/test/fixtures/systemjs/export-named-alongside-with-export-star/input.mjs b/packages/babel-plugin-transform-modules-systemjs/test/fixtures/systemjs/export-named-alongside-with-export-star/input.mjs new file mode 100644 index 0000000000..6e6938780e --- /dev/null +++ b/packages/babel-plugin-transform-modules-systemjs/test/fixtures/systemjs/export-named-alongside-with-export-star/input.mjs @@ -0,0 +1,5 @@ +export { default } from 'foo'; +export * from 'foo'; + +export { a, b } from 'bar'; +export * from 'bar'; diff --git a/packages/babel-plugin-transform-modules-systemjs/test/fixtures/systemjs/export-named-alongside-with-export-star/output.mjs b/packages/babel-plugin-transform-modules-systemjs/test/fixtures/systemjs/export-named-alongside-with-export-star/output.mjs new file mode 100644 index 0000000000..a4b810ba9e --- /dev/null +++ b/packages/babel-plugin-transform-modules-systemjs/test/fixtures/systemjs/export-named-alongside-with-export-star/output.mjs @@ -0,0 +1,29 @@ +System.register(["foo", "bar"], function (_export, _context) { + "use strict"; + + return { + setters: [function (_foo) { + var _exportObj = {}; + + for (var _key in _foo) { + if (_key !== "default" && _key !== "__esModule") _exportObj[_key] = _foo[_key]; + } + + _exportObj.default = _foo.default; + + _export(_exportObj); + }, function (_bar) { + var _exportObj2 = {}; + + for (var _key2 in _bar) { + if (_key2 !== "default" && _key2 !== "__esModule") _exportObj2[_key2] = _bar[_key2]; + } + + _exportObj2.a = _bar.a; + _exportObj2.b = _bar.b; + + _export(_exportObj2); + }], + execute: function () {} + }; +});