eslint-plugin-fsd-architecture
Version:
ESlint plugin to comply with FSD (Feature Sliced Design) frontend architecture rules
60 lines (54 loc) • 2 kB
JavaScript
/**
* @fileoverview Checking imports against FSD architecture rules
* @author Anatoly Ivashov (TonyShow)
*/
//------------------------------------------------------------------------------
// Requirements
//------------------------------------------------------------------------------
const rule = require('../../../lib/rules/import-path-check'),
RuleTester = require('eslint').RuleTester
//------------------------------------------------------------------------------
// Tests
//------------------------------------------------------------------------------
const ruleTester = new RuleTester({
parserOptions: { ecmaVersion: 6, sourceType: 'module' },
})
ruleTester.run('import-path-check', rule, {
valid: [
{
filename: 'C:/Users/project/src/entities/Article',
code: "import { ArticleCommentSlice } from '../../model/slices/addCommentFormSlice'",
},
],
invalid: [
{
filename: 'C:/Users/project/src/entities/Article',
code: "import { ArticleCommentSlice } from '@/entities/Article/model/slices/addCommentFormSlice'",
errors: [
{ message: 'Within one slice, all import paths must be relative' },
],
options: [
{
alias: '@',
},
],
output:
"import { ArticleCommentSlice } from './Article/model/slices/addCommentFormSlice'",
},
{
filename: 'C:/src/entities/Country/ui/CountrySelect/CountrySelect.tsx',
code: "import { Country } from '../../../../shared/const/country'",
errors: [{ message: 'Shared layer import must be absolute path' }],
output: null,
},
{
filename: 'C:/Users/project/src/entities/Article',
code: "import { ArticleCommentSlice } from 'entities/Article/model/slices/addCommentFormSlice'",
errors: [
{ message: 'Within one slice, all import paths must be relative' },
],
output:
"import { ArticleCommentSlice } from './Article/model/slices/addCommentFormSlice'",
},
],
})