@seolhun/eslint-config
v2.2.0
Published
Eslint configuration with prettier for TypeScript, React, and Node.js
Maintainers
Readme
@seolhun/eslint-config
ESLint v9+ flat config for TypeScript, React, and Node.js projects with Prettier integration.
Features
- ESLint v9+ flat config (ESM)
- Modular:
base(TS/Node) +react(FE) 분리 - TypeScript support (@typescript-eslint)
- React / React Hooks / JSX A11y support
- Prettier integration
- Perfectionist plugin (v5) for consistent code sorting
Requirements
- Node.js >= 20
- ESLint >= 9
- TypeScript >= 5
Installation
pnpm add -D @seolhun/eslint-config eslint prettier typescriptFE (React) 프로젝트는 React 플러그인도 설치:
pnpm add -D eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11yUsage
FE (Next.js / React) - 전체 config
// eslint.config.js (or eslint.config.mjs for CJS projects)
import config from '@seolhun/eslint-config';
export default [
...config,
{
ignores: ['node_modules/**', '.next/**', 'dist/**'],
},
];BE (NestJS / Node.js) - base config만
React 플러그인 불필요. base만 사용:
// eslint.config.js (or eslint.config.mjs for CJS projects)
import baseConfig from '@seolhun/eslint-config/base';
export default [
...baseConfig,
{
ignores: ['node_modules/**', 'dist/**'],
},
];Modular 사용 (base + react 명시적 합성)
import baseConfig from '@seolhun/eslint-config/base';
import reactConfig from '@seolhun/eslint-config/react';
export default [
...baseConfig,
...reactConfig,
{
ignores: ['node_modules/**', 'dist/**'],
},
];Prettier
// prettier.config.js
export { default } from '@seolhun/eslint-config/prettier';CJS 프로젝트 (type: "module" 없는 경우)
파일 확장자를 .mjs로 사용하면 ESM config 사용 가능:
// eslint.config.mjs
import baseConfig from '@seolhun/eslint-config/base';
export default [
...baseConfig,
{
ignores: ['node_modules/**', 'dist/**'],
},
];Exports
| Export | Description | Use Case |
|--------|-------------|----------|
| @seolhun/eslint-config | base + react 합성 | FE 프로젝트 (기본) |
| @seolhun/eslint-config/base | TS + Prettier + Perfectionist | BE / 공통 라이브러리 |
| @seolhun/eslint-config/react | React + Hooks + JSX A11y | FE additive |
| @seolhun/eslint-config/prettier | Prettier config | Prettier 설정 |
Included Plugins
Base (./base)
@typescript-eslint- TypeScript lintingeslint-plugin-perfectionist(v5) - Code sortingeslint-plugin-prettier- Prettier integrationeslint-config-prettier- Prettier conflict resolution
React (./react)
eslint-plugin-react- React ruleseslint-plugin-react-hooks- Hooks ruleseslint-plugin-jsx-a11y- Accessibility
Key Rules
Perfectionist Sorting
- Imports: type > builtin/external > internal > parent/sibling > style > side-effect
- Objects: Custom groups (react props, ids, keys, types, variants, scales, intents)
- Classes: static > private > public, properties > constructor > methods
- Enums/Exports: Natural alphabetical order
TypeScript
consistent-type-imports: Enforceimport typewith separate type importsexplicit-module-boundary-types: Disabled
Migration from v1 (ESLint 8)
- Remove
.eslintrc.js/.eslintrc.cjs/.eslintignore - Create
eslint.config.js(or.mjs) - Update dependencies:
pnpm add -D @seolhun/eslint-config@latest eslint@^9 prettier@^3 - Add
"type": "module"topackage.json(or use.mjsextension)
License
MIT
