목차
왜 특정 폴더에만 Eslint를 적용하나요?
기존 만들어진 프로젝트에서 airbnb세팅 이랑 여러 커스텀 eslintrc를 넣었을때 바꿔야 할 부분이 너무 많아서 도중 build가 안되는 현상이 일어났다.
그당시 .eslintrc.json
전체 규칙을 적용한 모습
{
"extends": [
"next/core-web-vitals",
"airbnb",
"airbnb/hooks",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
],
"plugins": ["@typescript-eslint", "prettier"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
},
"project": "./tsconfig.json"
},
"rules": {
"prettier/prettier": [
"error",
{
"endOfLine": "auto",
"singleQuote": true,
"trailingComma": "all",
"tabWidth": 2,
"useTabs": false // 추가: 탭 대신 공백 사용
}
],
"react/react-in-jsx-scope": "off",
"import/no-extraneous-dependencies": ["error", { "devDependencies": true }],
"@typescript-eslint/explicit-module-boundary-types": "off",
"react/jsx-filename-extension": [1, { "extensions": [".tsx", ".jsx"] }],
"import/extensions": [
"error",
"ignorePackages",
{
"js": "never",
"jsx": "never",
"ts": "never",
"tsx": "never"
}
],
"@typescript-eslint/no-explicit-any": "off"
},
"settings": {
"react": {
"version": "detect"
},
"import/resolver": {
"node": {
"extensions": [".js", ".jsx", ".ts", ".tsx"]
},
"typescript": {
"alwaysTryTypes": true,
"project": "./tsconfig.json"
}
}
}
}
특정 폴더에서부터 eslint를 적용하길 원했다.
기존 프로젝트에 그렇다고 eslint를 적용을안하자니 잘못된 버릇이 생길거같고 그렇게해서 생각난 방법이
앞으로 개발하는 것들을 폴더단위로 조금씩 고쳐나가자였다.
바뀐 .eslintrc.json
{
"plugins": ["@typescript-eslint", "prettier"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
},
"project": "./tsconfig.json"
},
"rules": {},
"overrides": [
{
"files": [
"src/components/**/*.{js,jsx,ts,tsx}",
"src/containers/**/*.{js,jsx,ts,tsx}"
],
"extends": [
"next/core-web-vitals",
"airbnb",
"airbnb/hooks",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
],
"rules": {
"prettier/prettier": [
"error",
{
"endOfLine": "auto",
"singleQuote": true,
"trailingComma": "all",
"tabWidth": 2,
"useTabs": false // 추가: 탭 대신 공백 사용
}
],
"react/react-in-jsx-scope": "off",
"import/no-extraneous-dependencies": [
"error",
{ "devDependencies": true }
],
"@typescript-eslint/explicit-module-boundary-types": "off",
"react/jsx-filename-extension": [1, { "extensions": [".tsx", ".jsx"] }],
"import/extensions": [
"error",
"ignorePackages",
{
"js": "never",
"jsx": "never",
"ts": "never",
"tsx": "never"
}
],
"@typescript-eslint/no-explicit-any": "off",
"no-unused-vars": "warn",
"import/prefer-default-export": "warn"
}
}
],
"settings": {
"react": {
"version": "detect"
},
"import/resolver": {
"node": {
"extensions": [".js", ".jsx", ".ts", ".tsx"]
},
"typescript": {
"alwaysTryTypes": true,
"project": "./tsconfig.json"
}
}
}
}
바뀐모습은 다음과같다.
기존 코드에서의 "extends"와 "rules"가 전체 부분을 차지하기에 문제였으므로
"overrides"항목을 추가해 적용할 폴더들을 "files"에 지정하고
"extends"와 "rules"에 넣으면된다.
files는 폴더 컨벤션 구조인 src/components와 src/containers에만 적용되게하였다.
'Next.js' 카테고리의 다른 글
[Next.js, styled-components] Next.js에 styled-components 설정하기 (0) | 2024.06.07 |
---|---|
[Next.js, TS,Zustand] 페이지 이동전 로딩효과 추가하기 (0) | 2024.05.30 |
[Next.js, TypeScript] airbnb 및 커스텀 TS 세팅 (1) | 2024.05.29 |
[Next.js]웹 페이지 전환 효과를 주는 방법들 (0) | 2024.05.24 |
[Next.js]Next.js에서 framer-motion을 이용한 페이지 전환효과 추가하기 (0) | 2024.05.24 |