Skip to content

Commit e120b2e

Browse files
committed
allow multiple named export through variable deconstructing fixes import-js#342
1 parent c15901b commit e120b2e

File tree

4 files changed

+30
-1
lines changed

4 files changed

+30
-1
lines changed

docs/rules/prefer-default-export.md

+7
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,10 @@ export { foo, bar }
4949
const foo = 'foo';
5050
export { foo as default }
5151
```
52+
53+
```javascript
54+
// good5.js
55+
56+
// export multiple vars through deconstructing.
57+
export const { foo, bar } = baz;
58+
```

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
"lodash.endswith": "^4.0.1",
7676
"lodash.find": "^4.3.0",
7777
"lodash.findindex": "^4.3.0",
78+
"lodash.get": "4.3.0",
7879
"object-assign": "^4.0.1",
7980
"pkg-up": "^1.0.0"
8081
}

src/rules/prefer-default-export.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
'use strict'
22

3+
import get from 'lodash.get'
4+
// import forEach from 'lodash.forEach'
5+
36
module.exports = function(context) {
47
let namedExportCount = 0
58
let specifierExportCount = 0
@@ -15,7 +18,12 @@ module.exports = function(context) {
1518
}
1619
},
1720
'ExportNamedDeclaration': function(node) {
18-
namedExportCount++
21+
const properties = get(node, 'declaration.declarations[0].id.properties')
22+
if (properties) {
23+
namedExportCount = namedExportCount + properties.length
24+
} else {
25+
namedExportCount++
26+
}
1927
namedExportNode = node
2028
},
2129
'ExportDefaultDeclaration': function() {

tests/src/rules/prefer-default-export.js

+13
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ ruleTester.run('prefer-default-export', rule, {
2525
code: `
2626
export { foo as default }`,
2727
}),
28+
test({
29+
code: `
30+
export const { foo, bar } = baz;`,
31+
}),
32+
2833
],
2934
invalid: [
3035
test({
@@ -44,5 +49,13 @@ ruleTester.run('prefer-default-export', rule, {
4449
message: 'Prefer default export.',
4550
}],
4651
}),
52+
test({
53+
code: `
54+
export const { foo } = baz;`,
55+
errors: [{
56+
ruleId: 'ExportNamedDeclaration',
57+
message: 'Prefer default export.',
58+
}],
59+
}),
4760
],
4861
})

0 commit comments

Comments
 (0)