ESLintrc 생성기
이 생성기는 브라우저 또는 Node 환경, TypeScript 지원, React 지원이라는 네 가지 선택으로 바로 쓸 수 있는 .eslintrc.json 설정을 만듭니다. eslint:recommended와 선택에 맞는 TypeScript 또는 React 플러그인, 그리고 합리적인 규칙 오버라이드 몇 가지를 조합하므로 결과를 그대로 프로젝트에 붙여넣으면 됩니다.
ESLint 설정을 생성하는 방법
-
1
환경 선택
코드가 브라우저, Node.js, 또는 둘 다에서 실행되는지 선택합니다. 생성기가 해당 `env` 항목과 `es2022`를 설정합니다.
-
2
TypeScript 활성화
TypeScript를 체크하면 생성기가 `@typescript-eslint/parser`와 권장 TypeScript 플러그인을 추가합니다.
-
3
React 활성화
React를 체크하면 생성기가 권장 프리셋이 포함된 `eslint-plugin-react`를 추가합니다.
-
4
생성
버튼을 클릭하면 읽기 쉽게 정렬된 JSON으로 설정이 만들어집니다.
-
5
프로젝트에 복사
결과를 `.eslintrc.json`에 붙여넣고 설정이 참조하는 플러그인을 설치합니다.
생성된 설정의 내용
생성기는 항상 eslint:recommended에서 시작하여 선택에 해당하는 항목만 추가합니다.
browser및/또는node가 있는env, 그리고es2022- TypeScript가 켜져 있으면
@typescript-eslint/parser와plugin:@typescript-eslint/recommended - React가 켜져 있으면
plugin:react/recommended warn으로 설정된no-console과no-unused-vars
출력은 기존 .eslintrc.json 형태의 단순한 JSON 객체로, 붙여넣고 나만의 규칙으로 확장할 수 있습니다.
플랫 설정 vs 레거시
ESLint 9는 .eslintrc.* 형식을 폐기하고 플랫 설정(eslint.config.js)을 권장합니다. 주요 차이:
| 항목 | 레거시 (.eslintrc) | 플랫 (eslint.config.js) |
|---|---|---|
| 형식 | JSON, YAML 또는 CommonJS | ESM 또는 CommonJS JavaScript 모듈 |
| 상속 | extends: ["plugin:react/recommended"] |
배열로 스프레드: ...reactPlugin.configs.recommended |
| 오버라이드 | 글롭 패턴을 쓴 overrides 배열 |
내보낸 배열의 여러 오브젝트 |
| 전역 변수 | env: { browser: true } |
명시적 import가 있는 languageOptions.globals |
| 무시 | .eslintignore 파일 |
설정 배열의 ignores 필드 |
새 프로젝트는 플랫 설정을 써야 합니다. 기존 프로젝트는 10.x 라인까지 레거시를 유지할 수 있지만 마이그레이션을 권장합니다.
플러그인 생태계
일반적인 React/TS 프로젝트 플러그인:
@typescript-eslint/eslint-plugin
@typescript-eslint/parser
eslint-plugin-react
eslint-plugin-react-hooks
eslint-plugin-jsx-a11y
eslint-plugin-import
eslint-config-prettier
적당히 의견이 강한 설정 하나에 여섯 개 패키지입니다. 생성기는 선택한 것만 추가하므로 설정이 참조하는 것만 설치하면 됩니다.
Prettier 공존
Prettier는 포맷을, ESLint는 포맷 이외의 정확성과 스타일을 담당합니다. 충돌을 피하려면:
eslint-config-prettier를 설치하고 extends/config의 마지막 항목으로 추가하세요.- 이것은 Prettier 출력과 충돌하는 모든 ESLint 규칙을 끕니다.
- Prettier를 별도로 실행하세요(에디터 저장 시, pre-commit 훅, CI에서).
새 프로젝트에서는 eslint-plugin-prettier를 쓰지 마세요. ESLint 안에서 Prettier를 실행해 ESLint를 느리게 만듭니다. 두 도구를 분리하세요.
규칙 조정 팁
- 느슨하게 시작해 점점 조이세요. 에러보다 경고를 먼저 켜세요.
- 테스트용 오버라이드. 테스트 파일은 종종
no-unused-expressions완화와 Jest 글로벌이 필요합니다. - 스크립트용 오버라이드. 빌드 스크립트는
env: node를 전역으로 추가하지 않고도 Node 글로벌이 필요할 수 있습니다. - 오버라이드를 문서화하세요. 모든 규칙 오버라이드에는 이유를 설명하는 주석이 필요합니다.
에디터에 맞는 설정
VS Code는 ESLint 확장이 설치·설정되어 있어야 합니다. 저장 시 자동 수정을 위해 워크스페이스 설정에 다음을 추가하세요:
{
"editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" },
"eslint.validate": ["javascript", "typescript", "javascriptreact", "typescriptreact"]
}
자주 묻는 질문
새 프로젝트는 플랫 설정(eslint.config.js)입니다. 이 생성기는 기존 .eslintrc.json 형식을 출력하며, ESLint는 레거시 모드에서 이 형식을 기본적으로 읽습니다. 나중에 마이그레이션할 때 무엇이 바뀌는지는 위의 비교표를 참고하세요.
TypeScript를 쓴다면 네. @typescript-eslint/parser와 @typescript-eslint/eslint-plugin이 TypeScript 인식 린팅을 가능하게 합니다. (구문뿐 아니라) 타입 인식 규칙을 쓰려면 파서에 project: './tsconfig.json'도 설정하세요.
대개 CI에 dev 의존성이 빠졌기 때문입니다. @typescript-eslint/*, 플러그인, ESLint 버전이 로컬과 CI에서 일치하는지 확인하세요. CI에서는 록파일을 존중하도록 npm install이 아닌 npm ci를 쓰세요.
아니요. 선택 내용은 설정을 생성하는 데만 사용되며 저장되지 않고 제3자와 공유되지도 않습니다.
관련 도구
ASCII 표 참조
NUL, LF, DEL 같은 제어 문자를 포함해 모든 문자에 대한 10진수, 16진수, 8진수, 2진수, HTML 숫자 문자 참조를 담은 0부터 127까지의 전체 ASCII 표.
HTML 문자 참조
HTML 엔티티의 검색 가능한 목록, 각 엔티티의 이름 및 숫자 코드, 그리고 특수 문자 및 기호에 대한 1클릭 복사 기능을 제공합니다.
키보드 단축키 참고표
macOS, Windows, Linux에서 VS Code, Chrome, GNU Readline을 쓰는 Bash의 문서화된 기본 단축키를 검색합니다.
보색 찾기
어떤 입력에 대해서도 보색을 찾습니다. HSL 반대 색, 분할 보색 쌍, 그리고 접근성 있는 조합 제안을 반환합니다.
EditorConfig 생성기
들여쓰기 스타일과 크기, 줄 끝, 문자 인코딩, 공백 규칙을 지정해 .editorconfig 파일을 생성하고 IDE와 편집기 전반의 형식을 일관되게 유지하세요.
이메일 검증기
이메일 주소를 검증합니다. RFC 5322 구문 검사, 실시간 MX 레코드 조회, 그리고 로컬 파트, 도메인, 길이 정보를 제공합니다. 이메일은 전송되지 않습니다.
이 도구는 다른 언어로도 제공됩니다
- Générateur d'ESLintrc [FR]
- مولد ESLintrc [AR]
- ESLintrc-generator [SV]
- ESLintrc-Generator [DE]
- Generador de ESLintrc [ES]
- เครื่องสร้าง ESLintrc [TH]
- Generator ESLintrc [ID]
- ESLintrc ジェネレーター [JA]
- Bộ tạo ESLintrc [VI]
- ESLintrc-generator [NL]
- Generator .eslintrc [PL]
- Gerador de ESLintrc [PT]
- ESLintrc Generator [EN]
- Generatore ESLintrc [IT]
- Генератор ESLintrc [RU]
- ESLintrc Üreticisi [TR]
- ESLintrc生成器 [ZH]