diff --git a/index.js b/index.js index f9a7fdb..8256266 100644 --- a/index.js +++ b/index.js @@ -99,13 +99,13 @@ function _generateStubs(ast, options) { } if (autoGlobalExports) { if (node.type === 'ExpressionStatement' - && isExportsAssignmentExpression(node.expression)) { + && isNamedExportsAssignmentExpression(node.expression)) { const functionName = node.expression.left.property.name; entryPointFunctions.add(functionName, node.expression.right.params, node.leadingComments); } else if (node.type === 'ExpressionStatement' && node.expression.type === 'SequenceExpression') { node.expression.expressions.forEach(function (expression) { - if (isExportsAssignmentExpression(expression)) { + if (isNamedExportsAssignmentExpression(expression)) { const functionName = expression.left.property.name; entryPointFunctions.add(functionName, expression.right.params, expression.leadingComments ? expression.leadingComments : node.leadingComments); @@ -124,15 +124,17 @@ function isGlobalAssignmentExpression(node) { && node.operator === '=' && node.left.type === 'MemberExpression' && node.left.object.type === 'Identifier' - && node.left.object.name === 'global' + && node.left.object.name === 'global'; } -function isExportsAssignmentExpression(node) { +function isNamedExportsAssignmentExpression(node) { return node.type === 'AssignmentExpression' && node.operator === '=' && node.left.type === 'MemberExpression' && node.left.object.type === 'Identifier' && node.left.object.name === 'exports' + && node.left.property.type === 'Identifier' + && node.left.property.name !== 'default'; } function generateStubs(ast, options) { @@ -147,13 +149,13 @@ function generateGlobalAssignments(ast) { estraverse.traverse(ast, { leave: (node) => { if (node.type === 'ExpressionStatement' - && isExportsAssignmentExpression(node.expression)) { + && isNamedExportsAssignmentExpression(node.expression)) { const functionName = node.expression.left.property.name; globalAssignments.add(functionName); } else if (node.type === 'ExpressionStatement' && node.expression.type === 'SequenceExpression') { node.expression.expressions.forEach(function (expression) { - if (isExportsAssignmentExpression(expression)) { + if (isNamedExportsAssignmentExpression(expression)) { const functionName = expression.left.property.name; globalAssignments.add(functionName); } diff --git a/test/fixtures/exports-source.js b/test/fixtures/exports-source.js index dc46d67..d6b7736 100644 --- a/test/fixtures/exports-source.js +++ b/test/fixtures/exports-source.js @@ -13,3 +13,5 @@ function test() { }; var X = 'x'; exports.test = test, exports.X = X; + +exports.default = function noAssignmentToGlobal() {};