웹팩은 여러개 파일을 하나의 파일로 합쳐주는 번들러다. 하나의 시작점으로부터 의존적인 모듈을 전부 찾아내서 하나의 결과물을 만들어 낸다.
로더는 타입스크립트와 같은 다른 언어를 자바스크립트 문법으로 변환해 주거나 이미지를 data URL 형식의 문자열로 변환
한다. 뿐만 아니라 CSS 파일을 자바스크립트에서 직접 로딩할 수 있도록 해준다.
플러그인은 번들된 결과물을 처리한다. 번들된 자바스크립트를 난독화 한다거나 특정 텍스트를 추출하는 용도로 사용한다.
브라우져마다 사용하는 언어가 달라서 프론트엔드 코드는 일관적이지 못할 때가 많다. 이러한 크로스브라우징 문제를 해결해 줄 수 있는 것이 바벨이다. ECMAScript2015+로 작성한 코드를 모든 브라우져에서 동작하도록 호환성을 지켜준다. 이렇게 변환 하는 것을 "트랜스파일" 한다라고 표현한다.
바벨은 ECMAScript2015 이상의 코드를 적당한 하위 버전으로 바꾸는 것이 주된 역할이다.
바벨은 파싱 -> 변환 -> 출력 순으로 빌드를 진행한다.
바벨은 파싱과 출력만 담당하고 변환작업은 플러그인이 처리한다.
목적에 맞게 여러가지 플러그인을 세트로 모아놓은 것을 "프리셋"이라고 한다.
module.exports = {
presets: [
[
"@babel/preset-env",
{
target:{
chrome:"79",
ie:"11",
},
},
],
],
}
이렇게 target 옵션에 브라우져 버전명만 지정하면 env 프리셋은 이에 맞는 플러그인들을 찾아 최적의 코드를 출력해 낸다.
바벨은 ECMAScript2015+를 ECMAScript5 버전으로 변환할 수 있는 것만 빌드한다. 그렇지 못한 것들은 "폴리필"이라고 부르는 코드조각을 추가해서 해결한다.
바벨을 직접 사용하는 것보다 웹팩으로 통합해서 사용하는 것이 일반적이다. 로더 형태로 제공하는데 babel-loader가 그것이다.
코드의 오류나 버그, 스타일 따위를 점검하는 것을 린트라고 부른다.
ESLint는 ECMAScript 코드에서 문제점을 검사하고 더 나은 코드로 정정하는 린트 도구중의 하나이다.
코드에서 검사하는 항목은 크게
문서의 Rules 메뉴에서 규칙 목록을 확인 할 수 있다.
modlue.exports = {
rules:{
"no-unexpected-multiline":"error",
// "off"나 0은 끔, "warn"이나 1은 경고, "error"나 2는 오류
},
}
자동 수정 가능한 규칙을 모아 놓은 eslint:recommended 설정이 있다.
module.exports = {
extends:[
"eslint:recommended",
],
}
ESLint에서 기본으로 제공하는 설정 외에 자주 사용하는 두 가지가 있다.
포매팅과 겹치는 부분이 있지만 좀 더 일관적인 스타일로 코드를 다듬는다.
{
extends:[
"eslint:recommended",
"eslint-config-prettier"
]
}
이렇게 함으로써 ESLint는 중복된 포매팅 규칙을 프리티어에게 맞기고 나머지 코드 품질에 관한 검사만 한다.
또는 eslint-plugin-prettier라는 플러그인을 이용해 프리티어 규칙을 ESLint 규칙으로 추가할 수 있다.
{
plugins:[
"prettier"
],
rules:{
"prettier/prettier":"error"
},
}
{
"husky":{
"hooks":{
"pre-commit":"lint-staged"
}
}
}
이렇게 하면 커밋 메세지 작성전에 lint-staged를 실행한다. 그리고 커밋하면 변경되거나 추가된 파일만 검사한다.
vs-code의 eslint와 prettier 익스텐션이 그러한 기능을 제공한다.