106 lines
2.9 KiB
TypeScript
106 lines
2.9 KiB
TypeScript
import type { Linter } from 'eslint';
|
|
|
|
import { interopDefault } from '../util';
|
|
|
|
export async function perfectionist(): Promise<Linter.Config[]> {
|
|
const perfectionistPlugin = await interopDefault(
|
|
import('eslint-plugin-perfectionist'),
|
|
);
|
|
|
|
return [
|
|
perfectionistPlugin.configs['recommended-natural'],
|
|
{
|
|
rules: {
|
|
'perfectionist/sort-exports': [
|
|
'error',
|
|
{
|
|
order: 'asc',
|
|
type: 'natural',
|
|
},
|
|
],
|
|
'perfectionist/sort-imports': [
|
|
'error',
|
|
{
|
|
customGroups: [
|
|
{
|
|
selector: 'type',
|
|
groupName: 'vben-core-type',
|
|
elementNamePattern: '^@vben-core/.+',
|
|
},
|
|
{
|
|
selector: 'type',
|
|
groupName: 'vben-type',
|
|
elementNamePattern: '^@vben/.+',
|
|
},
|
|
{
|
|
selector: 'type',
|
|
groupName: 'vue-type',
|
|
elementNamePattern: ['^vue$', '^vue-.+', '^@vue/.+'],
|
|
},
|
|
{
|
|
groupName: 'vben',
|
|
elementNamePattern: '^@vben/.+',
|
|
},
|
|
{
|
|
groupName: 'vben-core',
|
|
elementNamePattern: '^@vben-core/.+',
|
|
},
|
|
{
|
|
groupName: 'vue',
|
|
elementNamePattern: ['^vue$', '^vue-.+', '^@vue/.+'],
|
|
},
|
|
],
|
|
environment: 'node',
|
|
groups: [
|
|
['type-external', 'type-builtin', 'type-import'],
|
|
'vue-type',
|
|
'vben-type',
|
|
'vben-core-type',
|
|
['type-parent', 'type-sibling', 'type-index'],
|
|
['type-internal'],
|
|
'value-builtin',
|
|
'vue',
|
|
'vben',
|
|
'vben-core',
|
|
'value-external',
|
|
'value-internal',
|
|
['value-parent', 'value-sibling', 'value-index'],
|
|
'side-effect',
|
|
'side-effect-style',
|
|
'style',
|
|
'ts-equals-import',
|
|
'unknown',
|
|
],
|
|
internalPattern: ['^#/.+'],
|
|
newlinesBetween: 1,
|
|
order: 'asc',
|
|
type: 'natural',
|
|
},
|
|
],
|
|
'perfectionist/sort-modules': 'off',
|
|
'perfectionist/sort-named-exports': [
|
|
'error',
|
|
{
|
|
order: 'asc',
|
|
type: 'natural',
|
|
},
|
|
],
|
|
'perfectionist/sort-objects': [
|
|
'off',
|
|
{
|
|
customGroups: {
|
|
items: 'items',
|
|
list: 'list',
|
|
children: 'children',
|
|
},
|
|
groups: ['unknown', 'items', 'list', 'children'],
|
|
ignorePattern: ['children'],
|
|
order: 'asc',
|
|
type: 'natural',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
];
|
|
}
|