This is an eslint plugin that provides several eslint rules that are not available out of the box.
npm i @dczajkowski/eslint-plugin --save-dev # yarn add -D @dczajkowski/eslint-plugin
In your .eslintrc
config:
{
"plugins": ["@dczajkowski"],
"rules": {
"@dczajkowski/enum-value-name": "error",
"@dczajkowski/no-relative-imports": "warn",
"@dczajkowski/ordered-imports": "warn"
}
}
This rule forces enum value names to be PascalCase.
/* Valid */
enum A {
PascalCase = 0,
SnakeCase = 1,
CamelCase = 2,
CapitalizedWithUnderscores = 3,
}
/* Invalid */
enum A {
PascalCase = 0,
snake_case = 1,
camelCase = 2,
CAPITALIZED_WITH_UNDERSCORES = 3,
}
This rule disables relative imports, so you have to use aliases instead.
/* Valid */
import test1 from '@src/test1'
import test2 from '@module/test2'
import test3, { test4 } from '@src/test'
import { test5 } from '@src/some/dir/test'
import { test6 } from '@src/test6'
/* Invalid */
import test1 from './src/test1'
import test2 from './module/test2'
import test3, { test4 } from './src/test'
import { test5 } from './src/some/dir/test'
import { test6 } from './../src/test6'
This rule enforces alphabetized order for imports. There is an auto-fixer in place that corrects the order if it's wrong.
It checks for order between imports that don't have an empty line between them. Those that have an empty line, are ordered separately.
When auto-fixing to the correct order, it also moves the comments along with the group of imports.
import 'c' /* comment for c */
/* comment for b */
import 'b'
import '../../c';
import '../../b';
import './b';
import './c';
/* eslint-disable ordered-imports */
import 'z'
// comment for y
import 'y'
import 'x'
/* eslint-enable ordered-imports */
import 'g'
import 'f'
// 1st multiline comment for d
// 2nd multiline comment for d
import 'd'
// 1st multiline comment for a
// 2nd multiline comment for a
import 'a'
/* comment for b */
import 'b'
import 'c' /* comment for c */
import '../../b';
import '../../c';
import './b';
import './c';
/* eslint-disable ordered-imports */
import 'z'
// comment for y
import 'y'
import 'x'
/* eslint-enable ordered-imports */
import 'f'
import 'g'
// 1st multiline comment for a
// 2nd multiline comment for a
import 'a'
// 1st multiline comment for d
// 2nd multiline comment for d
import 'd'
This project is under The MIT License (MIT)