Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
epidemian
GitHub Repository: epidemian/eslint-plugin-import
Path: blob/main/src/rules/no-default-export.js
829 views
1
import docsUrl from '../docsUrl';
2
3
module.exports = {
4
meta: {
5
type: 'suggestion',
6
docs: {
7
url: docsUrl('no-default-export'),
8
},
9
schema: [],
10
},
11
12
create(context) {
13
// ignore non-modules
14
if (context.parserOptions.sourceType !== 'module') {
15
return {};
16
}
17
18
const preferNamed = 'Prefer named exports.';
19
const noAliasDefault = ({ local }) => `Do not alias \`${local.name}\` as \`default\`. Just export \`${local.name}\` itself instead.`;
20
21
return {
22
ExportDefaultDeclaration(node) {
23
const { loc } = context.getSourceCode().getFirstTokens(node)[1] || {};
24
context.report({ node, message: preferNamed, loc });
25
},
26
27
ExportNamedDeclaration(node) {
28
node.specifiers.filter(specifier => specifier.exported.name === 'default').forEach(specifier => {
29
const { loc } = context.getSourceCode().getFirstTokens(node)[1] || {};
30
if (specifier.type === 'ExportDefaultSpecifier') {
31
context.report({ node, message: preferNamed, loc });
32
} else if (specifier.type === 'ExportSpecifier') {
33
context.report({ node, message: noAliasDefault(specifier), loc });
34
}
35
});
36
},
37
};
38
},
39
};
40
41