40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
import type { Rule } from 'eslint';
|
|
|
|
const rule: Rule.RuleModule = {
|
|
meta: {
|
|
type: 'problem',
|
|
docs: {
|
|
description:
|
|
"Bans import from the specifier '.' and '..' and replaces it with '.+/index'",
|
|
category: 'Best Practices',
|
|
recommended: true,
|
|
},
|
|
fixable: 'code',
|
|
},
|
|
create: context => ({
|
|
ImportDeclaration(node) {
|
|
if (node.source.value === '.') {
|
|
context.report({
|
|
node: node.source,
|
|
message:
|
|
"Importing from the specifier '.' is not allowed. Use './index' instead.",
|
|
fix(fixer) {
|
|
return fixer.replaceText(node.source, '"./index"');
|
|
},
|
|
});
|
|
} else if (node.source.value === '..') {
|
|
context.report({
|
|
node: node.source,
|
|
message:
|
|
"Importing from the specifier '..' is not allowed. Use '../index' instead.",
|
|
fix(fixer) {
|
|
return fixer.replaceText(node.source, '"../index"');
|
|
},
|
|
});
|
|
}
|
|
},
|
|
}),
|
|
};
|
|
|
|
export default rule;
|