0.1.0 • Published 7 months ago

eslint-plugin-fsd-project v0.1.0

Weekly downloads
-
License
ISC
Repository
-
Last release
7 months ago

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"]

0.0.20

7 months ago

0.0.21

7 months ago

0.0.22

7 months ago

0.0.23

7 months ago

0.0.24

7 months ago

0.0.25

7 months ago

0.0.18

7 months ago

0.0.19

7 months ago

0.0.30

7 months ago

0.1.0

7 months ago

0.0.26

7 months ago

0.0.27

7 months ago

0.0.28

7 months ago

0.0.29

7 months ago

0.0.17

8 months ago

0.0.15

9 months ago

0.0.16

9 months ago

0.0.14

9 months ago

0.0.12

10 months ago

0.0.13

10 months ago

0.0.10

11 months ago

0.0.11

11 months ago

0.0.9

11 months ago

0.0.8

11 months ago

0.0.7

11 months ago

0.0.6

12 months ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago