Skip to content

Commit 219a8d2

Browse files
authored
Merge pull request #1012 from silvenon/extensions-export
Support export declarations in extensions rule
2 parents 3268a82 + ab49972 commit 219a8d2

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

src/rules/extensions.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,10 @@ module.exports = {
122122

123123
function checkFileExtension(node) {
124124
const { source } = node
125+
126+
// bail if the declaration doesn't have a source, e.g. "export { foo };"
127+
if (!source) return
128+
125129
const importPath = source.value
126130

127131
// don't enforce anything on builtins
@@ -159,6 +163,7 @@ module.exports = {
159163

160164
return {
161165
ImportDeclaration: checkFileExtension,
166+
ExportNamedDeclaration: checkFileExtension,
162167
}
163168
},
164169
}

tests/src/rules/extensions.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,22 @@ ruleTester.run('extensions', rule, {
100100
},
101101
},
102102
}),
103+
104+
// export (#964)
105+
test({
106+
code: [
107+
'export { foo } from "./foo.js"',
108+
'export { bar }',
109+
].join('\n'),
110+
options: [ 'always' ],
111+
}),
112+
test({
113+
code: [
114+
'export { foo } from "./foo"',
115+
'export { bar }',
116+
].join('\n'),
117+
options: [ 'never' ],
118+
}),
103119
],
104120

105121
invalid: [
@@ -314,5 +330,34 @@ ruleTester.run('extensions', rule, {
314330
options: [ 'never', {ignorePackages: true} ],
315331
}),
316332

333+
// export (#964)
334+
test({
335+
code: [
336+
'export { foo } from "./foo"',
337+
'export { bar }',
338+
].join('\n'),
339+
options: [ 'always' ],
340+
errors: [
341+
{
342+
message: 'Missing file extension for "./foo"',
343+
line: 1,
344+
column: 21,
345+
},
346+
],
347+
}),
348+
test({
349+
code: [
350+
'export { foo } from "./foo.js"',
351+
'export { bar }',
352+
].join('\n'),
353+
options: [ 'never' ],
354+
errors: [
355+
{
356+
message: 'Unexpected use of file extension "js" for "./foo.js"',
357+
line: 1,
358+
column: 21,
359+
},
360+
],
361+
}),
317362
],
318363
})

0 commit comments

Comments
 (0)