ES: Ecma Script. Ecma라는 기구에서 만든 script. 즉, 표준 javascript를 의미한다. Lint: 에러가 있는 코드에 표시를 달아놓은 것.
정리하자면, ESLint는 '자바스크립트 문법에서 에러를 표시해주는 도구'이다.
ESLint는 코드 검사를 통해 에러와 버그를 검사한다. 뿐만 아니라, 코드 스타일 가이드에 맞지 않는 부분을 찾아내는 기능도 한다.
이때, 검사 정도를 개발자가 설정할 수 있다. 즉, 어느 정도의 수준으로 에러를 표시하고/해결하게 할 건지에 대한 커스텀 및 스타일링이 가능하다. 따라서협업에 특히 유용하다. 가령, 정말 문제가 있는 에러만 표시해줄건지, 아니면 협의해둔 코딩 컨벤션에 위배되기만 하더라도 표시해줄건지 등등!
=> '개발자가 자신의 스타일 가이드를 작성할 수 있다' 라고 표현한다.
ESLint를 통해 에러와 코딩스타일을 통일시킬수 있기 때문에, 여러사람이 협업하더라도 마치 한명이 코딩한것처럼 일관성을 유지할 수 있고, 코드 품질을 유지할 수 있다.
CRA를 사용해서 react 프로젝트를 생성해보잣 (vite를 사용하면 eslint 자동 설치된닷)
yarn global add create-react-app
create-react-app eslint-study
ESLint를 설치하잣
yarn add -D eslint
ESLint의 config 파일을 초기화하잣. 아래 명령어는 ESLint 설정 파일을 만들어주는 명령어닷
yarn eslint --init
yes!구문체크/오류찾기/스타일링 중 어떤거를 할건지 선택!
일단은 스타일까지 지정해볼수있도록 맨 마지막걸 선택하잣
자신의 상황에 맞게 설정해준닷. 타입스크립트는,, 아직 잘 모르므로 No로 ,, 세미나에서 배운뒤에는 Yes로 해보잣
이때, Which style guide do you want to follow? 라는 질문에 여러 옵션을 확인할 수 있다.
Google, Airbnb 등의 기업들이 ESLint로 자바스크립트 코드를 린트(Lint)할때의 설정값들을 그대로 가져와서 쓸 수 있는것이닷! 일반적으로 구글과 에어비앤비의 가이드를 커스텀해서 사용한다고 한다. Airbnb의 경우, Google보다 좀 더 디테일하게 가이드가 정해져있다고 한다. 우리는 공부하는 입장이니까 좀더 디테일한 airbnb로 해보잣.
extends: ESLint의 설정을 확장함. (airbnt, prettier, google 등의 설정을 적용할 수 있음)
plugins: 여러 개발자들에 의해 설정된 일련의 규칙 집합. ESLint가 지원하고 사용할 수 있는 서드파티 플러그
플러그인을 설치만 하고 적용하지 않는다면, ESLint는 플러그인의 설정된 규칙들을 무시함.
🤍ESLint 로 검사하기
터미널에 명령어로 검사하는 방법
yarn eslint 파일명.js // 코드 검사
yarn eslint 파일명.js --fix // 자동으로 코드 교정
yarn eslint hi.js 입력 결과: 에러를 출력한다!
vscode extension으로 검사하는 방법
ESLint extension에 의해 hi에 에러 표시. hi에 커서 가져가면 모달로 에러 표시
ESLint extension을 설치하면, 터미널 명령어로 실행하지 않아도 에디터 상에 검사 내용 나타남!
💛 참고
대부분의 프로그래밍 언어에는 컴파일하는 과정에서 수행되는 Linter가 기본적으로 내장되어있다. BUT 자바스크립트는 '인터프리터 언어'이기 때문에, Linter가 내장되어 있지 않은 것!
=> 기본 내장 Linter가 없기 때문에, 런타임 환경에서 에러가 발생할 확률 多
=> ESLint와 같은 Linting 도구가 필요한 이유이닷
반응형
💜Prettier
💛 Prettier 란?
Prettier is an opinionated code formatter - Prettier 공식 홈페이지
Prettier란 코드 포맷터이다. 즉, 코드를 규칙대로 정렬해주는 역할을 한다.
코드의 가독성을 높이기 위해 우리가 하는 행위들(탭, 스페이스바, 엔터 등)에 대한 일관성을 부여해준다.
ESLint: 코드 퀄리티를 일관성 있게 유지하도록 도와줌 Prettier: 코드 스타일을 일관성 있게 유지하도록 도와줌
💛Prettier 사용 방법
🤍 Prettier 초기 세팅
아까 ESLint 설치해준거에서 이어서 해보자. 보통 Prettier + ESLint는 세트로 함께 초기세팅에 사용된다
Prettier를 설치하자
yarn add -D prettier
ESLint와 마찬가지로 설정파일이 필요하다. prettier 설정 파일은 .prettierrc 이다. 이 파일로 prettier의 각종 옵션을 직접 설정할 수 있다. 아래는 몇몇 옵션들과 해당 옵션의 default 값이다.
{
"printWidth": 80, // Specify the line length that the printer will wrap on.
"tabWidth": 2, // Specify the number of spaces per indentation-level.
"semi": true, // Print semicolons at the ends of statements.
"singleQuote": false, // Use single quotes instead of double quotes.
"trailingComma": "all", // Print trailing commas wherever possible in multi-line comma-separated syntactic structures.
"endOfLine": "lf" // Line Feed only (\n), common on Linux and macOS as well as inside git repos
}
가령, master나 main으로 직접 push 하는 것을 방지하도록 제어할 수 있다. master에 push하려고 하면, 해당 동작을 중단시키는 훅을 사용하면 된다.
🤍 Git Hooks를 공유하려면?
위와 같은 Hook을 공유하려면 어떻게 해야할까? Git Hooks는 .git 디렉토리에 저장된다. 즉, 깃 레포지토리에 올라가지 않는것이다. (.git 디렉토리는 버전관리 대상이 아니기 때문이다.)
그렇다면 Git Hooks는 어떻게 팀원들과 공유해야할까? 일반적으로 아래 세가지의 방법이 있다.
Git Hooks를 설정하는 스크립트를 공유한다
Git Template을 활용한다
husky를 사용한다
다시말해, husky는 Git Hooks를 간편하게 제어하고, 그를 공유하기 위해 사용하는 것이다. 특히, Git Hooks에 대해 자세히 알지 못하더라도, husky를 사용한다면 commit, push 등의 정책을 쉽게 관리하고 공유할 수 있다.
💛lint-staged 란?
staged 상태의 git 파일에 대해, lint와 개발자가 설정해둔 명령어를 실행하기 위해 사용한다.
staged 상태? 우리는 git 버전관리를 할 때, 파일에 변경사항이 생기면 커밋하여 기록을 남기곤 한다. commit을 하기 전에, 변경된 파일을 add하는 과정을 거쳐야하는데, 이때 add한 파일들을 'staged되었다'라고 한다. 정확하게는, staging area에 변경 내용을 추가한 것이다.
출처: Git SCM
🤍 lint-staged를 왜 사용할까?
husky만 사용한다면, 프로젝트 내의 모든 코드를 검사하기 때문에 비효율적이다. 그러나 lint-staged는 Git의 staged한 코드만 검사하기때문에, 효율적으로 lint할 수 있다.
💜 정리하며
원활한 협업을 위한 초기 세팅 툴인 ESLint, Prettier, stylelint, husky + lint-staged를 알아보았다. 이 툴들은 효율인 코드 관리에 큰 도움이 된다. 그러나, 지나치게 자세히 정책을 설정하면 오히려 악영향을 미칠 수 있다. 팀 상황을 고려하고, 적절한 수준의 정책을 지정하는 용도로 툴을 사용해야한다. 과유불급!