npx create-react-app@latest 프로젝트이름 --template typescript
typescript
@types/node
@types/react
@types/react-dom
@types/jest
까지 자동으로 설치가 된다.@types/styled-components
eslint
와 prettier
를 사용하시길래, 이번 기회에 사용해보고자 나도 설치해 보았다.npm i -D eslint
를 이용하여 설치해준다.npm i -D @typescript-eslint/eslint-plugin @typescript-eslint/parser
를 이용하여 설치한다.npm i -D eslint @typescript-eslint/eslint-plugin @typescript-eslint/parser
로 한번에 처리 할 수 있다.npx eslint --init
을 이용하여 .eslintrc.json
파일을 자동으로 생성 할 수 있다.1. eslint 를 어떻게 사용하는가?
2. 프로젝트에서 어떤 유형의 모듈을 사용하는지?
3. 어떤 프레임 워크를 사용하는지?
4. TS를 이용하는지?
5. 코드가 브라우저, 노드 중 어디에서 실행되는지?
6. 설정 파일을 어떤 포맷으로 저장 할 것 인지?
7. 필요한 플러그인을 설치 할 것 인지?
→ 필요한 옵션대로 설정하면 된다. 다만, 4번과 7번은 Y를 선택하자.
.eslintrc.json
파일이 생성된다."scripts": {
"lint": "eslint './src/**/*.{ts,tsx,js,jsx}'",
"lint:fix": "eslint --fix './src/**/*.{ts,tsx,js,jsx}'"
}
npm run lint
를 이용하여 프로젝트 전체의 lint 오류를 검사 한 내용을 표시 할 수 있으며, npm run lint:fix
를 이용하여 자동 수정이 가능하다.npm i -D eslint-config-airbnb
를 이용하여 react 에 적용되는 규칙을 추가해주기 위해 필요한 플러그인들이며, 각 플러그인의 용도는 아래와 같다.eslint-plugin-import
: ES6의 import
, export
구문을 지원한다.eslint-plugin-react
: React 규칙이 들어있는 플러그인eslint-plugin-react-hooks
: React Hooks 규칙이 들어있는 플러그인eslint-plugin-jsx-a11y
: JSX요소의 접근성 규칙에 대한 정적 검사 플러그인npm info "eslint-config-airbnb@latest" peerDependencies
로 위의 플러그인들을 확인 할 수 있다.npm i -D eslint-plugin-react eslint-plugin-react-hooks
npm i -D eslint-plugin-jsx-a11y eslint-plugin-import
npx install-peerdeps --dev eslint-config-airbnb
를 이용하면 사용하고자 하는 라이브러리와 해당하는 peerDependencies
를 한번에 설치 할 수 있으니 이걸 주로 사용합시다.peerDependencies
는 해당 라이브러리가 사용되는 프로젝트에 어떤 라이브러리를 함께 사용해달라고 요청하는 것과 같다고한다!npm i -D eslint-import-resolver-typescript
를 이용하여 해당 플러그인을 설치해주어야 한다..eslintrc.json
은 아래와 같다.{
"env": {
"browser": true,
"es2021": true
},
"extends": [
"airbnb",
"airbnb/hooks",
"eslint:recommended",
"plugin:react/recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": [
"react",
"@typescript-eslint"
],
"rules":{
"react/jsx-filename-extension":["warn",{"extensions":[".tsx"]} ],
"import/extensions":[
"error",
"ignorePackages",
{
"ts":"never",
"tsx":"never"
}
]
},
"settings":{
"import/resolver":{
"typescript":{}
}
}
}
.eslintignore
를 이용하여 적용시키지 않을 폴더 혹은 문서를 설정 할 수 있다.npm i -D prettier eslint-config-prettier eslint-plugin-prettier
를 이용하여 prettier와 필요한 플러그인을 해당 프로젝트에 설치한다..prettierrc
파일을 생성하고, 해당 파일 내부에 중괄호를 이용하여 “key” : value
로 값을 작성해주면 설정을 적용시킬 수 있다.{
"trailingComma": "es5",
"parser": "typescript",
"tabWidth": 2,
"semi": true,
"singleQuote": true
}
// 현재 사용하고 있는 설정
→ 속성의 이름과 값은 https://prettier.io/docs/en/options.html 를 참조 할 수 있다.
.prettierignore
를 이용하여 적용시키지 않을 폴더 혹은 문서를 설정 할 수 있다."scripts": {
"prettier": "prettier --write --config ./.prettierrc './src/**/*.{ts,tsx}'"
}
npm run prettier
를 이용하여 프로젝트 전체의 스타일을 컨벤션에 맞게 수정 할 수 있다.{
"env": {
"browser": true,
"es2021": true
},
"extends": [
"prettier", // 추가
"airbnb",
"airbnb/hooks",
"eslint:recommended",
"plugin:react/recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended" // 추가
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": [
"react",
"@typescript-eslint"
],
"rules":{
"react/jsx-filename-extension":["warn",{"extensions":[".tsx"]} ],
"import/extensions":[
"error",
"ignorePackages",
{
"ts":"never",
"tsx":"never"
}
]
},
"settings":{
"import/resolver":{
"typescript":{}
}
}
}