ESLint는 작성한 자바스크립트 코드를 분석한 후 문제점을 빠르게 찾아 고쳐주는 개발 툴킷입니다.
npm init @eslint/config 명령어를 통해 생성합니다.npm init @eslint/config
√ How would you like to use ESLint? · To check syntax, find problems, and enforce code style
(문법 체크, 에러 탐색, 코드 스타일 강제 적용
√ What type of modules does your project use? · JavaScript modules (import/export)
(ES6 import/export 사용)
√ Which framework does your project use? · None of these
(프레임워크를 사용하지 않음)
√ Does your project use TypeScript? · No
√ Where does your code run? · browser
√ What format do you want your config file to be in? · JavaScript
√ How would you like to define a style for your project? · Use a popular style guide
(Airbnb, Standard 및 Google 스타일 가이드와 같은 인기 있는 스타일 세트 중에서 선택할 수 있음)
√ Which style guide do you want to follow? · Airbnb: https://github.com/airbnb/javascript
√ Which package manager do you want to use? · npmnpx eslint yourfile.js
생성된 ESLint 설정 파일( .eslintrc.js) 을 열어보면 rules가 설정되어 있는 것을 확인할 수 있습니다.
module.exports = {
env: {
browser: true,
es2021: true,
},
extends: 'airbnb-base',
overrides: [
{
env: {
node: true,
},
files: [
'.eslintrc.{js,cjs}',
],
parserOptions: {
sourceType: 'script',
},
},
],
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
rules: {},
};
설정 파일 생성 시 airbnb 스타일을 선택했기 때문에 extends 속성값으로 'airbnb-base'가 적혀있는 것을 볼 수 있는데요!
extends를 통해 기본 규칙을 제공할 수 있고, rules속성을 통해 추가 규칙을 지정해 줄 수도 있습니다.

ESLint를 실행해보니 linebreaks(개행) 관련 오류가 거의 30%를 차지했습니다.
원인은 설정 파일에 linebreak-style 옵션을 windows(CRLF)로 명시하지 않는 경우 자동으로 unix(LF)가 사용되기 때문입니다.
해결을 위해 linebreak-style 속성 옵션으로 windows로 넣어주면 사진과 같이 더이상 linebreak-style 관련 오류가 나타나지 않는 것을 볼 수 있습니다.
"rules": {
"linebreak-style": ["error", "windows"]
}

MacOS랑 WindowsOS랑 번갈아 쓰는 경우에는 아래와 같이 0을 값으로 넣어 규칙을 끄는 게 더 좋습니다.
rules:
{
'linebreak-style': 0,
}
rules 옵션 값으로 0을 넣었었죠.
넣을 수 있는 옵션 값으로는 0, 1, 2가 있습니다.
기본적으로 rules는 error로 설정되어 있습니다.
error가 트리거되면 exit code는 1이됩니다.
warn은 트리거되어도 exit code에 영향을 주지 않습니다.
Prettier는 저장 시 코드의 형식을 지정할 수 있는 코드 포맷터입니다.
npm install --save-dev --save-exact prettier 명령어를 입력해 Prettier를 설치합니다.
설치가 완료되었으면 node --eval "fs.writeFileSync('.prettierrc','{}\n')" 명령어를 입력해 설정 파일을 생성합니다.
Prettier 설정 파일을 생성하므로써 텍스트 에디터에서 Prettier를 사용하고 있다는 걸 알 수 있습니다.
설정 파일 생성까지 완료했으면 npx prettier . --write 명령어로 포맷을 해봅시다!
console.log
("test");
let
a =
b;
포맷터를 실행하면 위의 못생긴 코드가 아래처럼 예쁘게 수정된 것을 확인할 수 있습니다.
console.log("test");
let a = b;
prettier --write . 명령어는 현재 위치에 있는 모든 것을 포맷하기 때문에 큰 프로젝트일 수록 시간이 오래 걸릴 수 있습니다.
prettier --write app/과 같이 특정 폴더를 지정해서 포맷을 할 수 있습니다.
prettier --write app/components/Button.js과 같이 특정 파일을 지정해서 포맷을 할 수 있습니다.
npx prettier . --check 명령어를 사용하면 --write 옵션처럼 파일을 덮어쓰지 않고 포맷이 되어 있는지만 확인할 수 있습니다.
.prettierignore 파일을 만들어 Prettier가 무시할(포맷하지 않을) 파일을 지정할 수도 있습니다.
.gitignore에 지정된 규칙이 있다면 해당 규칙을 따르고, .eslintignore 기반으로도 규칙을 지정할 수 있습니다.
기본적으로 .git, .sl, .svn, .hg와 같은 버전 제어 시스템 관련과 node_modules 파일은 무시하도록 되어 있습니다.
**/.git **/.svn **/.hg **/node_modules // --with-node-modules CLI 옵션이 지정되지 않은 경우에만
자바스크립트 내에서 // prettier-ignore다음 코드를 입력하면 해당 구문은 포맷터가 무시합니다.
ESLint 설정 파일 생성 시 How would you like to use ESLint? · To check syntax, find problems, and enforce code style 처럼 코드 스타일도 enforce하도록 했다면 Prettier의 코드 포맷 기능과 중복되게 됩니다.
이러한 기능 충돌을 막기 위해 npm install --save-dev eslint-config-prettier 명령어를 통해 충돌되는 포맷 규칙을 끌 수 있습니다.