미뤄왔던 개발 환경 설정을 한꺼번에 정리해보자
Eslint vs Prettier
eslint
: 코드의 퀄리티를 보장해주는 린터.prettier
: 코드의 스타일을 깔끔하게 통일시켜주는 린터.npm install --save-dev eslint
npm install --save-dev
eslint-config-airbnb-base
eslint-config-airbnb-typescript
npm install --save-dev
@typescript-eslint/eslint-plugin
@typescript-eslint/parser
.eslintrc
파일(JSON)을 최상위에 만들어준다// .eslintrc
{
"env": {
"browser": true,
"es2021": true,
"jest": true // jest 사용
},
// extends는 eslint-config-prettier로 eslint와 충돌부분을 비활성화
"extends": ["plugin:@typescript-eslint/recommended", "airbnb-base", "airbnb-typescript/base", "prettier"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module",
"project": "./tsconfig.json"
},
// plugins eslint-plugin-prettier로 prettier을 적용
"plugins": ["@typescript-eslint", "prettier"],
"rules": {},
"ignorePatterns": ["./tsconfig.json", "./jest.config.json", ".eslintrc"]
}
npm install --save-dev eslint-config-prettier eslint-plugin-prettier
.eslintrc
파일의 extends
, plugins
에 명시해준다여기서 extends와 plugins의 차이점을 보자면
extends는 airbnb나 google같은 외부기관의 eslint룰을 가져오는것이고 eslint-config-XXX에 해당,
plugins는 react나 typescript 같은 부가적인 기능들에 대한 내용이고 eslint-plugin-XXX에 해당
npm install --save-dev
jest
@types/jest
eslint-plugin-jest
ts-jest
npm install @jest/globals
jest.config.json
생성// jest.config.json
{
"preset": "ts-jest",
"testEnvironment": "node"
}
npm install --save-dev typesciprt
tsconfig.json
생성//tsconfig.json
{
"compilerOptions": {
"target": "ES2015",
"module": "ES2015",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true,
"allowJs": false,
"strict": true,
"outDir": "dist",
"esModuleInterop": true
},
"ts-node": {
"files": true
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules"]
}
{
...
"scripts": {
"eslint": "eslint --fix src",
"test": "jest"
},
...
}
https://daewoongkim.com/blog/vs-code-lint-automatically-on-save/
https://github.com/aptakqmf12/twdash
https://velog.io/@limelimejiwon/ReactViteESLintPrettier-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0