사실 팀프로젝트를 시작하기 전까지, 코드 포맷을 맞춰야 한다고 생각해보지 못했었다.
하지만 개발은 혼자 작업하는 것이 아니라 하나의 프로젝트를 여러 개발자들과 같이 작업하는 것이기 때문에 코드 스타일이 복잡해질 것이다. 각자 다른 코딩 스타일을 가지고 있을 것이고, 통일된 스타일이 아니라면 남이 읽었을 때 이해하기 힘들어지기 때문에 작업자들의 코딩 스타일을 일치시키기 위한 Linter와 Code Formatter를 사용하는 것이 좋다.
이러한 도구들을 사용하게 되면 어떤 형태의 문법을 지향하고 지양할지, 포맷팅은 쌍따옴표를 사용할지, 홑따옴표를 사용할지, 혹은 몇 자마다 줄바꿈을 할지, 문장의 끝에 세미콜론을 사용할지 등의 여부를 고민하지 않고 코드 작성 자체에 집중할 수 있도록 도와줄 수 있다 !
npm install eslint --save-dev
CRA(Create React App)의 경우 내장되어 있기 때문에 설치할 필요가 없다.
프로젝트 루트에 .eslintrc.json
파일 생성
// 예시
{
"extends": ["react-app", "eslint:recommended", "prettier"],
"rules": {
"no-var": "error", // var 금지
"no-multiple-empty-lines": "error", // 여러 줄 공백 금지
"no-console": ["error", { "allow": ["warn", "error", "info"] }], // console.log() 금지
"eqeqeq": "error", // 일치 연산자 사용 필수
"dot-notation": "error", // 가능하다면 dot notation 사용
"no-unused-vars": "error" // 사용하지 않는 변수 금지
}
}
// 개인 프로젝트 적용한 코드
{
"plugins": ["prettier"],
"extends": ["react-app", "eslint:recommended", "prettier"],
"rules": { "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": "off" }
}
npm install prettier --save-dev
vscode에서 prettier-vscode extension을 설치한다면 따로 CLI를 사용하지 않아도 된다.
프로젝트 루트에 prettier 설정파일을 생성하여 아래와 같이 작성한다.
// .prettierrc.js 예시
module.exports = {
printWidth: 100, // printWidth default 80 => 100 으로 변경
singleQuote: true, // "" => ''
arrowParens: "avoid", // arrow function parameter가 하나일 경우 괄호 생략
};
// 프로젝트 적용
{
"semi": true,
"tabWidth": 2,
"printWidth": 120,
"singleQuote": true,
"trailingComma": "es5",
"jsxSingleQuote": true
}
ESLint와 Prettier를 같이 사용하려면 다음 패키지를 추가로 로컬 설치해야 한다.
eslint는 linting 기능을, prettier는 formatting을 담당하는 구조가 이상적이다. 하지만 eslint에는 일부 formatting 과 관련된 룰이 포함되어있다. Prettier와 충돌하는 부분이 발생하기 때문에 eslint에서 관련 룰을 해제할 수 있도록 적용해주는 플러그인이 존재한다.
즉, eslint-config-prettier는 ESLint 설정 중에서 Prettier와 충돌하는 부분을 비활성화 한다.
npm install eslint-config-prettier --save-dev
eslint-config-prettier 설치
npm install eslint-plugin-prettier --save-dev
eslint-plugin-prettier 설치
optional
pakage를 설치하다 보면 터미널에서 명령어를 통해 eslint와 prettier를 실행할 수 있다.
에디터 차원에서 파일을 저장할 때 formatting을 적용해주고, 에디터에서 eslint의 메세지들을 확인할 수 있게 해주는 기능들을 플러그인 형태로 제공하기에 원할시 사용할 수 있다.
3. vscode 설정 -> settings -> require config 활성화
.prettierrc.json 파일이 있으면 지원하겠다는 설정인 것 같다. 아래 참고 링크보면 여러 구성 파일이 있다.
파일 다 세팅해놓고 안되서 ..위 내용 체크해주니깐 잘 된다 !
지금까지는 내 로컬에서만 적용이 되는 것이다. 팀프로젝트를 앞으로 진행할 거라면 모두 다 동일한 코드 스타일로 적용해야 통일성있기 때문에 강제로 설정해주는 모듈을 사용해보자.
npm install
과정에서 세팅해둔 git hook을 다 적용시킬 수 있어 편하다.commit
, merge
가 발생하거나 push
가 발생하기 전 클라이언트에서 실행하는 클라이언트 훅이 있고, git repository로 push
가 발생했을 때 서버에서 실행하는 서버 훅이 있다.npm install husky --save-dev
: 설치 npx husky install
: 처음 husky 세팅할 때 실행{
"scripts": {
"postinstall": "husky install", // clone 받을 때 npm install시 husky도 설치되도록 설정
"format": "prettier --cache --write .",
"lint": "eslint --cache .",
},
}
commit
을 실행하기 전에 실행git add
명령어를 자동으로 수행되게 할 수 있다.npx husky add .husky/pre-commit "npm run format && git add ."
git push
명령 실행 시 동작하며 remote 정보를 업데이트 하고 난 후 remote로 데이터를 전송하기 전에 실행push
를 중단시킬 수 있음npx husky add .husky/pre-push "npm run lint"