TypeScript + ESLint 설정 방법

ESLint는 좋은 개발자 경험을 위해 중요합니다.
이 문서에서는 TypeScript + ESLint를 설정하는 방법을 설명합니다.

ESLint 설치



https://eslint.org/

npm install --save-dev eslint


TypeScript용 플러그인 설치




npm install --save-dev @typescript-eslint/parser
npm install --save-dev @typescript-eslint/eslint-plugin


Prettier용 플러그인 설치



https://prettier.io/

Prettier는 예쁜 코드 포맷터입니다.
그러나 때로는 Prettier의 코드 형식이 eslint 규칙과 충돌합니다.eslint-config-prettier 그 문제를 해결합니다.

npm install --save-dev prettier eslint-config-prettier


가져오기용 플러그인 설치




npm install --save-dev eslint-plugin-import


설정




# .eslintrc.json

{
  "extends": [
    "plugin:@typescript-eslint/recommended",
    "prettier",
    "plugin:import/errors"
  ],
  "rules": {
    "react/jsx-props-no-spreading": "off",
    "import/prefer-default-export": "off",
    "import/extensions": [
      "error",
      "ignorePackages",
      {
        "js": "never",
        "jsx": "never",
        "ts": "never",
        "tsx": "never"
      }
    ],
    "import/order": [
      "error",
      {
        "groups": [
          "builtin",
          "external",
          "internal",
          ["parent", "sibling"],
          "object",
          "type",
          "index"
        ],
        "newlines-between": "always",
        "pathGroupsExcludedImportTypes": ["builtin"],
        "alphabetize": { "order": "asc", "caseInsensitive": true },
        "pathGroups": [
          {
            "pattern": "{react,react/**,react-dom/**,next,next/**}",
            "group": "external",
            "position": "before"
          },
          {
            "pattern": "@/**",
            "group": "internal",
            "position": "before"
          },
          {
            "pattern": "./**.module.css",
            "group": "index",
            "position": "after"
          }
        ]
      }
    ]
  }
}


패키지 파일에 명령 추가




# package.json

"scripts": {
  "lint": "eslint **/*.ts"
},


운영




npm run lint


비주얼 스튜디오 코드




# .vscode/settings.json

{
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll": true
  }
}

좋은 웹페이지 즐겨찾기