eslint-plugin-fsd-essentials
v1.0.2
Published
ESLint plugin for Feature-Sliced Design architecture
Maintainers
Readme
eslint-plugin-fsd-essentials
ESLint плагин для валидации архитектуры Feature-Sliced Design (FSD). Обеспечивает соблюдение правил импортов между слоями FSD.
✅ Проверяет иерархию импортов FSD
🔧 Автофиксы для абсолютных импортов внутри слайса
🫰 Работает с динамическими импортами
⚙️ Гибкая конфигурация
🧪 Полное покрытие тестами
📦 Не требует зависимостей кроме ESLint
📦 Установка
npm install --save-dev eslint-plugin-fsd-essentials🚀 Быстрый старт
1. Настройка ESLint
Добавьте плагин в ваш ESLint конфиг:
// .eslintrc.js
module.exports = {
plugins: ['fsd-essentials'],
extends: [
'plugin:fsd-essentials/recommended'
]
};Или с кастомной конфигурацией:
// .eslintrc.js
module.exports = {
plugins: ['fsd-essentials'],
rules: {
'fsd-essentials/layer-imports': ['error', {
srcPath: '/src/',
aliasPrefix: '@',
}],
},
};2. Настройка TypeScript
// tsconfig.json
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@app/*": ["src/app/*"],
"@processes/*": ["src/processes/*"],
"@pages/*": ["src/pages/*"],
"@widgets/*": ["src/widgets/*"],
"@features/*": ["src/features/*"],
"@entities/*": ["src/entities/*"],
"@shared/*": ["src/shared/*"]
}
}
}📖 Что проверяет плагин
✅ Правильные импорты
// features/auth/ui.tsx → entities/user
import { userModel } from '@entities/user'; // ✅ Правильно через Public API и в соответствии с иерархией слоев
// entities/user/ui.tsx → entities/user/model
import { model } from './model'; // ✅ Правильно относительный импорт внутри слайса
// app/index.tsx → app/providers.ts
import { Provider } from './providers'; // ✅ Слои app и shared не содержат слайсов. Работает из коробки❌ Неправильные импорты
// entities/user/model.ts → app
import { config } from '@app/config'; // ❌ entities не может импортировать app
// app/index.ts → entities/user/model
import { model } from '@entities/user/model'; // ❌ Нарушение Public API
// app/index.ts → entities/user
import { user } from '../../entities/user'; // ❌ Относительный импорт между слоямиГотовые конфигурации
Плагин предоставляет предустановленные конфигурации:
// Рекомендуемая конфигурация
extends: ['plugin:fsd-essentials/recommended']
// Содержит по умолчанию
// srcPath: '/src/'
// aliasPrefix: '@'
🔗 Полезные ссылки
- Feature-Sliced Design - Официальная документация FSD
