자바스크립트에서 코드를 작성할 때 코드 품질을 높이고 일관된 스타일을 유지하기 위해 사용되는 도구
- 둘을 함께 사용하면 코드 품질과 일관성을 높일 수 있으며,
- 프로젝트의 협업 과정에서 코드 리뷰를 보다 효율적으로 진행할 수 있다.
ESLint는 코드 품질 및 버그 검사에 중점을 두고, Prettier는 코드 스타일을 관리하는 데 중점을 둔다.
ESLint는 보통 프로젝트의 초기 빌드 과정에서 사용되어, 개발자가 코드를 작성하는 동안 실시간으로 코드를 검사하여 오류를 찾아낸다. 또한, IDE나 코드 에디터에서 플러그인으로 사용되어 개발자에게 편의성을 제공한다.
자바스크립트 코드의 스타일을 일관된 형식으로 유지하도록 돕고,
- 들여쓰기, 줄 바꿈, 세미콜론 사용 등 코드 스타일을 체크해 일관성 유지
코드를 분석해 잠재적인 오류나 버그를 찾아내는 정적 분석 도구
- 잘못된 변수 사용, 사용되지 않는 변수, 잘못된 조건문등을 검출
프로젝트에 맞게 ESLint 규칙을 추가하거나 수정해 사용 가능
- 개발 프로젝트 팀원끼리 자체적으로 정한 스타일을 강제할 수 있다.
$ npm install eslint --save-dev
// or
$ yarn add -D eslint
$ npm install --save-dev eslint typescript @typescript-eslint/parser @typescript-eslint/eslint-plugin

.eslintrc.js 파일 설정프로젝트 루트 경로의 .eslintrc.js 파일 설정
.eslintrc.js, .eslintrc.json, .eslintrc 3가지 파일의 형태 모두 가능하다.
.eslintrc.js
module.exports = {
env: {
browser: true,
es2021: true,
},
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:react/recommended',
'plugin:prettier/recommended',
],
overrides: [
{
env: {
node: true,
},
files: ['.eslintrc.{js,cjs}'],
parserOptions: {
sourceType: 'script',
},
},
],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
plugins: ['@typescript-eslint', 'react', 'prettier'],
rules: {
'react/react-in-jsx-scope': 'off',
},
};
코드의 스타일을 일관되게 유지하고 관리하기 위해 사용
- 보통 Prettier는 코드 저장 시 자동으로 동작하여 코드 서식을 일관되게 유지한다.
- 빌드 프로세스에서도 Prettier를 실행하여 코드의 일관성을 유지하고, 코드 리뷰에서도 팀원들 간의 서식을 통일시키는 데 사용된다.
$ npm install -D prettier
// or
$ yarn add -D prettier


settings.json 파일에 추가
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
Editor: Default Formatter 검색
.prettierrc 파일 생성해서 원하는 프리티어 설정.prettierrc{
// 한 줄에 표시될 최대 문자 수
"printWidth": 120,
// 탭의 너비
"tabWidth": 2,
// 탭 대신 공백 문자를 사용할 것인지 여부
"useTabs": false,
// 세미콜론 사용 여부
"semi": true,
// 작은 따옴표 사용 여부
"singleQuote": true,
// 여러 줄의 배열 또는 객체 리터럴 마지막 요소 뒤에 쉼표 추가 여부
"trailingComma": "all",
// 객체 리터럴의 중괄호 사이에 공백 추가 여부
"bracketSpacing": true,
// 화살표 함수의 매개변수가 단일 매개변수인 경우 괄호 사용 여부
"arrowParens": "avoid",
// proseWrap 옵션은 Markdown과 같은 텍스트에서 줄 바꿈을 적용하는 방식을 설정
"proseWrap": "never",
// 파일의 끝에 있는 줄 종료 문자 설정
"endOfLine": "lf"
}
주로 ESLint와 Prettier은 개발 과정에서 함께 사용된다. 하지만 Prettier와 ESLint를 같이 사용하게 되면 두 설정이 다 적용되어 충돌이 발생한다.
이러한 문제를 해결하기 위해서 ESLint 내부에서 Prettier를 이용할 수 있도록 설정을 변경해야 한다.
추가 플러그인이 필요하다.
npm i -D prettier eslint-plugin-prettier eslint-config-prettier
.eslintrc 파일에 다음과 같이 추가{
"extends": ["eslint:recommended", "plugin:prettier/recommended"]
}
{
"plugins": ["prettier"],
"rules": {
"prettier/prettier": "error"
}
}
패키지 설치
npm install eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-plugin-react --D
prettier eslint-config-prettier eslint-plugin-prettier -D
.eslintrc 파일에 다음과 같이 추가
{
"parser": "@typescript-eslint/parser",
"extends": [
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended",
"prettier/@typescript-eslint"
],
"plugins": ["@typescript-eslint"],
"rules": {
"@typescript-eslint/explicit-module-boundary-types": "off",
"prettier/prettier": "error"
}
}
.eslintrc.jsmodule.exports = {
env: {
browser: true, // 브라우저 환경에서 실행되는 코드에 대한 설정
es2021: true, // ECMAScript 2021 기능을 사용할 수 있도록 설정
},
extends: [
'eslint:recommended', // ESLint의 권장 설정 사용
'plugin:@typescript-eslint/recommended', // TypeScript에 대한 ESLint 권장 설정 사용
'plugin:react/recommended', // React에 대한 ESLint 권장 설정 사용
'plugin:prettier/recommended', // Prettier와 함께 사용할 권장 설정 사용
],
overrides: [
{
env: {
node: true, // Node.js 환경에서 실행되는 코드에 대한 설정
},
files: ['.eslintrc.{js,cjs}'], // 해당 파일에만 적용되는 설정
parserOptions: {
sourceType: 'script', // 파일이 스크립트 형식인지를 지정
},
},
],
parser: '@typescript-eslint/parser', // TypeScript 코드를 파싱하는 데 사용할 파서 지정
parserOptions: {
ecmaVersion: 'latest', // ECMAScript 최신 버전 사용
sourceType: 'module', // 모듈 형식의 코드 사용
},
plugins: ['@typescript-eslint', 'react', 'prettier'], // 사용할 플러그인 목록
rules: {
'react/react-in-jsx-scope': 'off', // JSX 파일에서 React import 없이 JSX 사용을 허용
},
};