-
editorconfig vs eslint vs prettier :: 마이구미개발 설정 2022. 10. 22. 21:50반응형
이 글은 editorconfig, eslint, prettier 를 비교한다.
대부분의 프로젝트를 보면, 3가지 모두 공존하고 있는 경우가 많다.
eslint, prettier 를 사용한다면, editorconfig 는 굳이 필요없지않나? 라고 혹시 생각하고 있다면 이 글은 도움이 될 것이다.
3가지 파일 모두 존재하는 프로젝트 예제 - https://github.com/facebook/react
EditorConfig - https://editorconfig.org/
Eslint - https://eslint.org/
Prettier - https://prettier.io/우선 EditorConfig, Eslint, Prettier 각각 무엇인지 살펴보자.
EditorConfig
우리가 사용하는 에디터에서 코드베이스를 정의한 스타일에 맞게 작성할 수 있게 도와준다.
.editorconfig 파일을 생성해서 제공하는 설정값들을 지정할 수 있다.
indent_style = space indent_size = 2 trim_trailing_whitespace = true insert_final_newline = true max_line_length = 100 ...
위 설정이 나타내는 의미는 다음과 같다.
- 에디터에서는 들여쓰기 기준이 2칸으로 설정된다.
- 줄바꿈전에 공백이 존재하면 자동으로 제거(trim)한다.
- 마지막 줄은 항상 새로운 줄을 추가한다.
- 한 줄의 최대 코드 길이의 기준은 100 으로 안내한다.
Prettier
EditorConfig 와 마찬가지로 코드베이스를 정의한 스타일에 맞게 작성할 수 있게 도와준다.
EditorConfig 와 다른 점은 자동으로 코드를 포맷팅하는 기능을 제공해준다.
가장 중요한 것은 코드 포맷팅에 특화되어, 관련 기능들이 다양하다.
.prettierrc.js 파일을 통해 원하는 설정을 할 수 있다.
{ tabWidth: 2, semi: false, singleQuote: true }
위 설정이 나타내는 의미는 다음과 같다.
- 탭 클릭시 2칸으로 이동하게 지정한다.
- 세미콜론을 사용하지 않는다.
- 큰 따옴표가 아닌 작은 따옴표를 허용한다.
Eslint
Prettier, EditorConifg 와 마찬가지로 코드베이스를 정의한 스타일에 맞게 작성할 수 있게 도와준다.
그리고 Prettier 처럼 자동으로 코드를 포맷팅하는 기능도 제공한다.
Eslint 의 주된 목적은 사용하지 않는 코드, 오류를 발생할 수 있는 코드 구현 방식 등 잠재적인 오류를 잡아내는 린팅(Linting)이다.
.eslintrc.js 파일을 통해 원하는 설정을 할 수 있다.
{ extends: ["airbnb"], rules: { "no-console": "error", "import/prefer-default-export": "off" } }
위 설정이 나타내는 의미는 다음과 같다.
- airbnb 의 규칙을 따른다.
- console.log 와 같은 코드는 에러로 지정한다.(빌드된 파일에 포함되지 않기 위함)
- export 가 하나인 경우에는 default export 를 권장하는 규칙을 제외한다.
3가지를 보면, 뭔가 EditorConfig < Prettier < Eslint 순으로 탄생된 것처럼 설명하고 있어보인다.
Eslint 는 EditorConfig, Prettier 의 기능을 모두 포함하고 있어서, 결국 Eslint 만 사용해도 되는것처럼 보인다.
하지만 그렇지 않다는 건 조금만 찾아봐도 쉽게 알 수 있다.
예를 들어, 대부분 Eslint 와 함께 Prettier 를 사용하는 것을 찾아볼 수 있다.
3가지 모두 사용하는 이유는 무엇인가?
그 이유는 간단하다.
3가지 모두 각자 다른 역할이 존재하는 것이 가장 큰 이유이다.
우선 Eslint, Prettier 가 공존하는 이유는 포맷팅은 특화된 Prettier 로부터, 린팅은 Eslint 의 도움을 얻는다고 보면 된다.
그렇다면 왜 EditorConfig 는 사용하는 것인가?
코드 포맷팅을 Prettier 가 자동으로 해줄 수 있다.
하지만 인지해야하는 것은 Prettier 는 저장 시점이나 커밋하는 시점에 실행하여 자동 포맷팅 기능을 활용하는 것이다.
이것이 의미하는 것은 EditorConfig 설정이 없다면, 에디터에서 키보드 탭을 눌렀을 때 어떻게 될까?
만약 에디터의 설정값이 4라면, 4칸을 이동할 것이다.
그리고 나서 저장을 한다면, Prettier 에 의해 다시 2칸으로 자동 포맷팅 되는 것이다.
결론은 EditorConfig 를 활용하면, 실시간 타이핑 시점에서도 코드 스타일의 일관성에 도움을 줄 수 있다.
EditorConfig 가 없어도 충분히 Prettier 로 코드 스타일을 일관성있게 유지할 수 있다.
그렇더라도 EditorConfig 의 효과는 생각보다 강력하여 코드 일관성뿐만 아니라 생산성에도 도움을 준다고 생각한다.
반응형'개발 설정' 카테고리의 다른 글
.gitattributes 는 무엇인가? :: 마이구미 (0) 2022.10.22 snippet in vscode :: 마이구미 (0) 2017.12.16 UML diagram in vscode :: 마이구미 (0) 2017.11.27 eclipse 자동완성 기능 :: 마이구미 (0) 2017.11.25 Java in vscode :: 마이구미 (4) 2017.11.25