React, eslint, prettier 개발환경 셋팅하기
2021. 6. 17. 15:02
반응형
1) npx create-react-app 앱이름 --template typescript
2) package.json 설정 후 npm i
"dependencies": {
"@material-ui/core": "^4.11.3",
"@material-ui/lab": "^4.0.0-alpha.57",
"@testing-library/jest-dom": "^5.12.0",
"@testing-library/react": "^11.2.6",
"@testing-library/user-event": "^12.8.3",
"@types/jest": "^26.0.22",
"@types/node": "^12.20.10",
"@types/react-dom": "^17.0.3",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"styled-components": "^5.2.3",
"typescript": "^4.2.4",
"web-vitals": "^1.1.1"
},
...
"devDependencies": {
"@types/react": "^17.0.3",
"@types/react-dom": "^17.0.3",
"@types/styled-components": "^5.1.9",
"@typescript-eslint/eslint-plugin": "^4.20.0",
"@typescript-eslint/parser": "^4.20.0",
"eslint": "^7.23.0",
"eslint-config-airbnb-typescript": "^12.3.1",
"eslint-config-prettier": "^8.1.0",
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-react": "^7.23.1",
"eslint-plugin-react-hooks": "^4.2.0",
"prettier-eslint": "^12.0.0",
"typescript": "^4.2.3"
}
}
3) 루트에 tsconfig.json 파일 생성 후 아래 내용 작성 (여기서 파일 import 절대경로로 사용하기 위한 baseUrl 설정)
{
"compilerOptions": {
"baseUrl": "src",
"target": "es5",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
},
"include": ["src"]
}
4) 루트에 .prettierrc 파일 생성 후 (이 파일을 작성하지 않으면 저장 시 더블쿼츠 에러 발생)
{
"singleQuote": true,
"semi": true,
"useTabs": false,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 80,
"arrowParens": "always",
"orderedImports": true,
"endOfLine": "auto"
}
5) 루트에 .eslintrc.json 파일 생성 후 아래 내용 작성
{
"extends": [
"airbnb-typescript/base",
"airbnb/hooks",
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:prettier/recommended"
],
"plugins": ["react", "@typescript-eslint", "prettier"],
"rules": {
"react/prop-types": 0,
"react/jsx-props-no-spreading": "off",
"import/no-cycle": 1, // "off
// Allow CamelCase
"@typescript-eslint/camelcase": "off",
"@typescript-eslint/no-floating-promises": "off",
"@typescript-eslint/no-unsafe-assignment": "off",
// conflict with prettier
"react/jsx-curly-newline": "off",
"react/jsx-one-expression-per-line": "off",
"react/jsx-wrap-multilines": "off",
"react/jsx-filename-extension": [
1,
{ "extensions": [".js", ".jsx", ".ts", ".tsx"] }
]
},
"env": {
"browser": true,
"jasmine": true,
"jest": true,
"es6": true
},
"parserOptions": {
"ecmaVersion": 9,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true,
"modules": true
},
"project": "./tsconfig.json"
},
"settings": {
"react": {
"pragma": "React",
"version": "detect"
},
"import/resolver": {
"node": {
"extensions": [".js", ".jsx", ".ts", ".tsx"],
"moduleDirectory": ["node_modules", "src"]
}
}
},
"parser": "@typescript-eslint/parser",
"ignorePatterns": [
"node_modules/",
"react-app-env.d.ts",
"reportWebVitals.ts",
"public/",
"build/"
]
}
6) (선택) 사용하기 편하게 폴더 정리
-setupTest 파일 삭제
반응형
'한 걸음 > React & Next.js' 카테고리의 다른 글
Numble '다른 색깔 찾기 게임 제작 챌린지' -1 (개발순서, 컴포넌트 구조, 카운트다운 로직구현) (0) | 2022.02.07 |
---|---|
[React, typescript] 다른 컴포넌트에 props로 함수 넘겨주기 (1) | 2022.02.06 |
Tailwind CSS 프로젝트 셋팅 (0) | 2022.02.05 |
React+typescript 프로젝트에 Google Analytics (GA) 달기 (0) | 2022.01.17 |
styled-components에서 props 받아오기 (0) | 2021.06.17 |