eslint-plugin-fsd-project v0.1.0
eslint-plugin-fsd-project
Check imports for FSD architecture
Installation
You'll first need to install ESLint:
npm i eslint --save-dev
Next, install eslint-plugin-fsd-project
:
npm install eslint-plugin-fsd-project --save-dev
Usage
Add fsd-project
to the plugins section of your .eslintrc
configuration file. You can omit the eslint-plugin-
prefix:
{
"plugins": [
"fsd-project"
]
}
Then configure the rules you want to use under the rules section.
{
"rules": {
"fsd-project/path-checker": [
"error",
{ "alias": "@", "srcPath": "src" }
],
"fsd-project/public-api-imports": [
"error",
{
"alias": "@",
"testFilesPatterns": ["**/*.test.ts", "**/*.test.tsx", "**/StoreDecorator.tsx"],
}
],
"fsd-project/layer-imports": [
"error", {
"alias": "@",
"srcPath": "src",
"ignoreImportPatterns": ["**/StoreProvider", "**/testing"],
}
],
}
}
Rules
path-checker
Описание
Пути импорта в рамках одного слайса должны бить относительными.
Сообщение В рамках одного слайса все пути должны быть относительными
Исключением является слайс shared
Аргументы
alias: string = ''
- строка-символ псевдонима путей
srcPath: string = 'src'
- строка - относительный путь от root до папки с src
public-api-imports
Описание
Абсолютные пути импорда должны быть из Public API
Сообщение
- Абсолютный импорт разрешен только из Public API (index.ts)
- Тестовые данные необходимо импортировать из publicApi/testing.ts
Исключением является слайс shared
Аргументы
alias
: string = '' - строка-символ псевдонима путей
testFilesPatterns
: string[] = [] - массив паттернов файлов для тестирования
layer-imports
Описание
Проверяет корректный импорт между слоями в рамках концепции FSD:
Правила импортов:
app <-- pages
, widgets
, features
, shared
, entities
pages <-- widgets
, features
, shared
, entities
widgets <-- features
, shared
, entities
features <-- shared
, entities
entities <-- shared
, entities
shared <-- shared
Сообщение Слой может импортировать в себя только нижележащие слои (shared, entities, features, widgets, pages, app)
Аргументы
alias: string = ''
- строка-символ псевдонима путей
srcPath: string = 'src'
- строка - относительный путь от root до папки с src
ignoreImportPatterns: string[] = []
- массив паттернов файлов для исключений
customLayerRules: object = {}
- правила импоров слоев, которые перезапишут правила по-умолчанию
type-reference
Описание
Проверяет использование глобальных типов в рамках FSD
Сообщение
- Запрещено использовать глобальные типы из других слайсов (entities, features, widgets, pages, app)
Аргументы
alias
: string = '' - строка-символ псевдонима путей
ignoreModules: string[] = []
- массив паттернов деклараций модулей для исключений. Например ["Shared"]
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago