Tools

ESLint Basic, ESLint 파일 기본 설정

namhj 2022. 6. 9. 14:06
반응형

Install, 설치

npm install eslint --save-dev

Create Setting File, 설정파일 만들기

  • eslintrc.js 파일을 생성

Basic Structure, 기본 구조

module.exports = {
    "rules": {
        "semi": ["error", "always"],
        "quotes": ["error", "double"]
    }
};

Error Level, 에러 단계

off

 "semi": ["error", "always"],
  • 규칙을 끈다.

warn

 "semi": ["warn", "always"],
  • 규칙을 위반하면 경고를 표시한다. 코드는 정상 실행

error(권장 - recommended)

 "semi": ["error", "always"],
  • 규칙을 위반하면 프로그램이 실행되지 않는다.

Advanced Options, 고급 설정

PARSER OPTIONS

module.exports = {
    "parserOptions": 6,
    "sourceType": "module",
    "ecmaFeatures": {
        "jsx": true
    }
};
  • "ecmaVersion" : 6 : ECMAScript 버전 설정

  • "sourceType": "module" : JS file이 script가 아닌 module임을 명시

  • "ecmaFeatures": { "jsx": true } : jsx 문법을 사용 할 때. ( 리액트의 경우 eslint-plugin-react를 설치 필요)

PARSER

module.exports = {
    "parser": "esprima"
};
  • ESLint는 기본적으로 esprima 파서를 사용한다.

  • Babel : @babel/eslint-parser

  • typescript : @typescript-eslint/parser

ENV

module.exports = {
    "env": {
        "browser": true,
        "node": true
    }
};
  • 해당 환경에서 정의된 함수나 전역변수를 사용할 수 있는 옵션.
  • "browser": true : console.log()등을 에러없이 사용가능,
  • "node": true : require를 에러없이 사용가능.
  • jQuery 환경 설정도 여기서 할 수 있다.(jquery의 경우 아래 참조)
// $ 에러만 방지 하고 싶을때
module.exports = {
    "env": {
        "browser": true,
        "node": true
    },
    "globals": {
        "$": true
    }
};
// 모듈로 가져와서 사용하기(권장)
module.exports = {
    "plugins": [
        "jquery", // eslint-plugin-jquery
    ],
    "env": {
        "jquery/jquery": true,
    }
};

PLUGINS

install

module.exports = {
    "plugins": [
        "eslint-plugin-react"
    ]
};
  • “eslint-plugin-react”의 “eslint-plugin”은 생략 가능
  • @jquery/eslint-plugin-jquery 의 경우도 @jquery/jquery 형태로 생략가능

Set up(Rules)

module.exports = {
    "plugins": [
        "react"
    ],
    "rules": {
        "react/display-name": true,
        "react/jsx-key": true,
        "react/jsx-no-duplicate-props": true
        ...
    }
};
  • 직접 관련 룰들을 커스터마이징 해서 설정해주고 싶을때

Set up(EXTENDS)

module.exports = {
    "plugins": [
        "react"
    ],
    "extends": [
        "eslint:recommended",
        "plugin:react/recommended"
    ]
};
  • 만들어진 규칙을 가져와서 사용할 때
반응형