Skip to content

Commit 7300a83

Browse files
authored
Merge pull request #90 from storybookjs/feat/default-exports-autofix
feat(default-exports): add autofix even if component name is not found
2 parents 74d0c68 + f8f1b91 commit 7300a83

File tree

2 files changed

+25
-26
lines changed

2 files changed

+25
-26
lines changed

lib/rules/default-exports.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -86,23 +86,23 @@ export = createStorybookRule({
8686
messageId: 'shouldHaveDefaultExport',
8787
}
8888

89-
if (!componentName) {
90-
context.report(report)
91-
} else {
92-
const fix = (fixer) =>
93-
fixer.insertTextBefore(node, `export default { component: ${componentName} }\n`)
94-
95-
context.report({
96-
...report,
97-
fix,
98-
suggest: [
99-
{
100-
messageId: 'fixSuggestion',
101-
fix,
102-
},
103-
],
104-
})
89+
const fix = (fixer) => {
90+
const metaDeclaration = componentName
91+
? `export default { component: ${componentName} }\n`
92+
: 'export default {}\n'
93+
return fixer.insertTextBefore(node, metaDeclaration)
10594
}
95+
96+
context.report({
97+
...report,
98+
fix,
99+
suggest: [
100+
{
101+
messageId: 'fixSuggestion',
102+
fix,
103+
},
104+
],
105+
})
106106
}
107107
},
108108
}

tests/lib/rules/default-exports.test.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import ruleTester from '../../utils/rule-tester'
1919

2020
ruleTester.run('default-exports', rule, {
2121
valid: [
22+
'export default { }',
2223
"export default { title: 'Button', component: Button }",
2324
"export default { title: 'Button', component: Button } as ComponentMeta<typeof Button>",
2425
`
@@ -38,6 +39,10 @@ ruleTester.run('default-exports', rule, {
3839
invalid: [
3940
{
4041
code: 'export const Primary = () => <button>hello</button>',
42+
output: dedent`
43+
export default {}
44+
export const Primary = () => <button>hello</button>
45+
`,
4146
errors: [
4247
{
4348
messageId: 'shouldHaveDefaultExport',
@@ -78,18 +83,12 @@ ruleTester.run('default-exports', rule, {
7883
},
7984
{
8085
code: dedent`
81-
import { Something } from './MyComponent'
86+
import { MyComponentProps } from './MyComponent'
8287
export const Primary = () => <button>hello</button>
8388
`,
84-
errors: [
85-
{
86-
messageId: 'shouldHaveDefaultExport',
87-
},
88-
],
89-
},
90-
{
91-
code: dedent`
92-
import { MyComponent } from './Something'
89+
output: dedent`
90+
import { MyComponentProps } from './MyComponent'
91+
export default {}
9392
export const Primary = () => <button>hello</button>
9493
`,
9594
errors: [

0 commit comments

Comments
 (0)