2차 공부/TIL
24.08.22 yarn vite js react 에 eslint적용하기
공대탈출
2024. 8. 22. 21:05
vite로 만든 react프로젝트는 eslint가 알아서 적용되어있다. 하지만 사용해본적이없어 설정해보고자 한다.
1. react프로젝트 생성
yarn create vite vite-react-eslint --template react
2. eslint관련 패키지 추가
yarn add eslint eslint-config-prettier eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react prettier
react hooks도 강제하고싶다면 아래 패키지도 추가하자.
yarn add eslint-plugin-react-hooks
타입스크립트를 사용할때는 아래패키지를 추가로 설치한다.
yarn add @typescript-eslint/eslint-plugin @typescript-eslint/parser
3. 설정파일 생성
.prettierrc - prettier관련 설정을 지정하는 파일
.prettierignore - prettier가 정렬을 할 수 없게 만들고싶을 때 지정하는 파일
vite로 프로젝트를 위와같이 생성하면 eslint.config.js파일이 생성되어있다.
//eslint.config.js
import js from "@eslint/js";
import globals from "globals";
import react from "eslint-plugin-react";
import reactHooks from "eslint-plugin-react-hooks";
import reactRefresh from "eslint-plugin-react-refresh";
export default [
//dist폴더와 node_modules폴더 제외
{ ignores: ["dist", "node_modules"] },
{
//js파일과 jsx파일에 eslint적용
//ts쓴다면 ts, tsx추가
files: ["**/*.{js,jsx}"],
languageOptions: {
//ECMAversion설정
ecmaVersion: 2020,
//글로벌 변수 정의
globals: globals.browser,
//ECMAScript기능 및 모듈 시스템 설정
parserOptions: {
ecmaVersion: "latest",
ecmaFeatures: { jsx: true },
//module로 설정하여 ES모듈 사용가능
sourceType: "module",
},
},
//React버전 정의
settings: { react: { version: "18.3" } },
//eslint Plugin 정의
plugins: {
react,
"react-hooks": reactHooks,
"react-refresh": reactRefresh,
},
//eslint rules설정
rules: {
//eslint/js 패키지의 추천규칙 확장, 최신 js규칙을 포함하여 권장되는 설정
...js.configs.recommended.rules,
//eslint-plugin-react추천규칙 포함, react에 특화된 규칙 제공
...react.configs.recommended.rules,
//jsx 변환방식인 automatic모드 규칙 제공, react17에 JSX변환도입되어 새 변환 지원
...react.configs["jsx-runtime"].rules,
//eslint-plugin-react-hooks의 규칙 포함, react hooks 사용에 관련된 규칙 제공
...reactHooks.configs.recommended.rules,
//target=_blank 속성을 가진 a태그에 대한 경고 발생
//보안상 이유로 rel="noopener noreferrer" 추가권장
"react/jsx-no-target-blank": "off",
//React fast Refresh와 관련된 규칙, 컴포넌트만 내보내는 것을 권장
//개발 중 상태유지와 빠른 새로고침 지원
//wran레벨로 지정하여 경고로 표시됨
"react-refresh/only-export-components": [
"warn",
//상수값도 내보낼 수 있도록 허용
{ allowConstantExport: true },
],
},
},
];
rules에 특정 룰을 추가하고 싶다면 eslint Playground에서 체험해보며 룰을 지정하자
//.prettierrc
{
"printWidth": 120,
"tabWidth": 4,
"useTabs": false,
"semi": true,
"singleQuote": false,
"bracketSpacing": true,
"trailingComma": "none"
}
prettier설정을 해당 프로젝트에서 공유하고 싶을 때 작성해주면 된다.
prettier설정 또한 prettier Playground에서 직접 변경해가며 수정하고 넣어주면 된다.
//.prettierignore
*.md
prettierignore파일은 prettier의 영향범위에서 벗어날 파일을 지정하는 것이다.
gitignore에서 깃에 연관지어지지 않을 파일(env 등)을 지정했던 것처럼 파일을 지정해주면 된다.
나는 README.md가 prettier때문에 변경되는 것이 싫어 md확장자 파일은 모두 지정되지 않게 설정하였다.