[Next.js] 초기 셋팅 방법 (+ts, eslint, prettier)

Yongwoo Cho·2022년 5월 25일
1

TIL

목록 보기
71/98
post-thumbnail

프로젝트 생성

npx create-next-app 프로젝트명 –-typescript

eslint, prettier 라이브러리 설치

npm i -D eslint eslint-config-airbnb eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react eslint-plugin-react-hooks
npm i -D prettier eslint-config-prettier eslint-plugin-prettier
npm i -D babel-eslint eslint-plugin-babel
npm i -D @typescript-eslint/eslint-plugin @typescript-eslint/parser

설정파일 예시

eslint 설정 파일 예시 (.eslintrc)

{
  "plugins": ["@typescript-eslint", "prettier"],
  "extends": ["plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "ecmaVersion": 2018,
    "sourceType": "module",
    "ecmaFeatures": {
      "jsx": true,
      "tsx": true
    }
  },
  "settings": {
    "react": {
      "version": "detect"
    }
  },
  "ignorePatterns": ["node_modules/", ".next/*"],
  "rules": {
    "react/react-in-jsx-scope": 0,
    "react/prefer-stateless-function": 0,
    "react/jsx-filename-extension": 0,
    "react/jsx-one-expression-per-line": 0,
    "no-nested-ternary": 0,
    "no-unused-vars": "off",
    "no-undef": "off",
    "/no-useless-escape": "off",
    "prettier/prettier": [
      "error",
      {
        "endOfLine": "auto",
        "useTabs": false
      }
    ],
    "indent": ["error", 2],
    "@typescript-eslint/no-empty-interface": "off",
    "no-empty-interface": "off"
  },
  "globals": {
    "React": "writable"
  },
  "overrides": [
    {
      "files": ["*.js", "*.jsx"],
      "rules": {
        "@typescript-eslint/explicit-function-return-type": "off",
        "@typescript-eslint/no-unused-vars": "off",
        "@typescript-eslint/no-empty-interface": "off"
      }
    }
  ]
}

prettier 설정 파일 예시 (.prettierrc)

{
  "trailingComma": "es5",
  "tabWidth": 2,
  "semi": true,
  "singleQuote": true,
  "printWidth": 100,
  "eslintIntegration": true,
  "endOfLine": "auto",
  "parser": "typescript",
  "useTabs": false,
  "arrowParens": "always"
}
profile
Frontend 개발자입니다 😎

0개의 댓글