01.lint-staged란?
Git
에 staged
상태인 파일만 lint
해주는 Node.js
패키지
- 즉,
git
에 commit
하기전에 코드를 점검하고 수정할 수 있도록 도와주는 패키지를 의미한다.
02.lint-staged의 필요성
husky
만 사용하면 프로젝트의 모든 코드를 검사히기 때문에 비효율적이지만 lint-staged
는 Git
의 staged
한 코드만 검사해서 보다 효율적인 lint
가 가능하다.
03.패키지 설치
$ npm install husky -D
$ npx husky install
$ code .
04.package.json
"scripts": {
"prepare": "husky install",
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
prepare
에 husky install
을 입력하여 다른 환경에서도 패키지를 설치하여 사용할 때에도 git hooks
이 활성화될 수 있도록 합니다.
05.pre-commit 생성
commit
을 하기 직전에 lint-staged
라는 스크립트를 실행시킬 수 있도록 설정해봅니다. - - VScode
에서 터미널을 열어 .husky
내에 pre-commit
파일을 만들고 필요한 설정을 진행하겠습니다.
$ npx husky add .husky/pre-commit "npx lint-staged"
$ npm i lint-staged -D
lint-staged
패키지를 개발 의존성 모드로 설치해줍니다.
- 이를 통해 커밋을 하기 직전에
lint-staged
라는 명령어가 실행됩니다.
- 그렇다면
lint-staged
가 어떠한 역할을 수행해야할지 규정해줘야 합니다.
- 참고로
pre-commit
파일안에 lint-staged
를 npx lint-staged
로 수정해줘야 commit
할 때 오류가 발생하지 않습니다.
06.lint-staged 규정
"lint-staged": {
"**/*.js": [ // 프로젝트에 있는 모든 js 파일이 커밋을 하려고 하면!
"eslint --fix", // eslint의 규칙에 맞게 고치고
"prettier --write", // prettier에 맞게 고치고
"git add" // 변경 내용을 git에 add 시킴
]
},
packaged.json
파일 내에 코딩을 하여 수행해야하는 역할을 규정합니다.
$ npm i prettier -D
create-react-app
으로 설치된 프로젝트는 eslint
가 기본적으로 설치되어 있으나 prettier
는 별도로 설치를 해주어야 합니다.
07.Commit
App.js
에 있는 className="App"
을 className='App'
으로 수정하고 commit
해줍니다.
- 그럼
commit
되기전에 className='App'
이 자동으로 prettier
패키지에 의해서className="App"
으로 수정된 후 커밋 되는 것을 볼 수 있습니다.
- 이처럼
lint-staged
는 프로젝트에서 커밋을 진행하게 되면 lint-staged
에서 규정했던eslint
, prettier
을 먼저 적용한 후에 커밋 시킵니다.