일단 프로젝트 CNA을 해줍니다 ㅎㅎ ... 

yarn create next-app  --ts  --tailwind   --eslint

 

사실 저는 이 과정에 대해서 한번 적은적이 있었기 때문에, 간단하게 설정 파일들만 기록해놓으려고 합니다. 그냥 가져가서 install만 하면 사용할 수 잇게끔.. 일단 저는 제일 보편적인 airbnb꺼를 설치하고 사용했습니다 ~ 

 

package.json

 "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint",
    
    // 허스키가 사전 커밋 훅을 설치하고 설정하기 위한 준비 스크립트
    "prepare": "rm -rf .husky && husky install && npx husky add .husky/pre-commit \"npm run lint-staged\" ",
    

    // pre-commit linting을 실행시키는 스크립트
    "lint-staged": "lint-staged"
  },
"devDependencies": {
    "@typescript-eslint/eslint-plugin": "^5.59.6", // 타입스크립트 ESLint 플러그인
    "@typescript-eslint/parser": "^5.59.6", // ESLint 타입스크립트 파서
    "eslint-config-airbnb": "^19.0.4", 
    "eslint-config-airbnb-typescript": "^17.0.0",
    "eslint-config-prettier": "^8.8.0", 
    "eslint-plugin-jsx-a11y": "^6.7.1", 
    "eslint-plugin-prettier": "^4.2.1",
    "husky": "^8.0.3", 
    "lint-staged": "^13.2.2", // 스테이지 안에 파일들에 린터를 실행시켜줍니다.
    "prettier": "^2.8.8",
    "prettier-plugin-tailwindcss": "^0.3.0" 
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"  // lint-staged를 실행하기 위한 pre-commit hook을 설정

    }
  },
  "lint-staged": {
    "*.{js,jsx,ts,tsx}": [
      "prettier --write", // 파일 포맷팅
      "eslint --fix" // 린팅에러 처리
    ]
  }
  }

 

.eslintrrc.json

{
  "root": true, // 이 파일이 루트 구성 파일임을 지정합니다.
  "parser": "@typescript-eslint/parser", // TypeScript 파일의 파서를 지정합니다.
  "plugins": ["@typescript-eslint", "prettier"], // 사용할 ESLint 플러그인을 지정합니다.
  "parserOptions": {
    "project": "./tsconfig.json", // TypeScript 프로젝트 구성 파일을 지정합니다.
    "createDefaultProgram": true // 구문 분석 시 기본 TypeScript 프로그램을 생성합니다.
  },
  "env": {
    "browser": true, // 'document' 및 'window'와 같은 브라우저 전역 변수를 사용할 수 있도록 합니다.
    "node": true, // Node.js 전역 변수와 Node.js 스코프를 사용할 수 있도록 합니다.
    "es6": true // ES6 전역 변수와 ES6 기능을 사용할 수 있도록 합니다.
  },
  "ignorePatterns": ["node_modules/"], // 린팅에서 무시할 폴더 또는 파일을 지정합니다.
  "extends": [
    "airbnb", // Airbnb 스타일 가이드 규칙을 확장합니다.
    "airbnb-typescript", // TypeScript용 Airbnb 스타일 가이드 규칙을 확장합니다.
    "airbnb/hooks", // React hooks에 대한 Airbnb 스타일 가이드 규칙을 확장합니다.
    "next/core-web-vitals", // Next.js 핵심 웹 성능 측정 규칙을 확장합니다.
    "plugin:@typescript-eslint/recommended", // 권장 TypeScript 규칙을 확장합니다.
    "plugin:prettier/recommended", // Prettier 통합을 가능하게 하는 규칙을 확장합니다.
    "prettier" // Prettier와 충돌하는 ESLint 규칙을 비활성화합니다.
  ],
  "rules": {
    "react/react-in-jsx-scope": "off", // JSX에서 'React'를 import할 필요 없이 사용할 수 있도록 합니다.
    "react/jsx-filename-extension": ["warn", { "extensions": [".ts", ".tsx"] }], // JSX 파일에 .ts 및 .tsx 확장자를 허용합니다.
    "no-useless-catch": "off" // 불필요한 'catch' 절을 허용하지 않도록 하는 규칙을 비활성화합니다.
  }
}

 

 

그리고 나서 npm install or yarn add 하시면 husky폴더가 생성이되면서 pre-commit파일이 생깁니다. 

이때 .gitignore에 husky 추가도 해주시고, 본인이 원하시는 포매팅 옵션들을 prettierrc.json에 추가해줍니다. 

 

'Project > Jetaime' 카테고리의 다른 글

자동 재생 무한 슬라이더 만들기  (0) 2023.07.08
Scroll-Snap ? 해볼게요.  (0) 2023.06.05