본문 바로가기

카테고리 없음

ESLint, Prettier 학습 내용 정리

반응형

프론트엔드 개발환경의 이해: 린트 | 김정환 블로그 (jeonghwan-kim.github.io)

 

프론트엔드 개발환경의 이해: 린트

1. 배경 오래된 스웨터의 보푸라기 같은 것을 린트(Lint)라고 부른다. 보푸라기가 많으면 옷이 보기 좋지 않은데 코드에서도 이런 보프라기가 있다. 들여쓰기를 맞추지 않은 경우, 선언한 변수를

jeonghwan-kim.github.io

린트

  • 요약

    • npm i -D eslint-plugin-prettier
    • npm i -D eslint
    • npm i -D prettier
  • 보푸라기를 제거하는 린트 롤러(Lint roller)처럼 코드의 오류나 버그, 스타일 따위를 점검하는 것을 린트(Lint) 혹은 린터(Linter)라고 부른다.

  • 포맷팅

    • 일관된 코드 스타일
    • 프리티어에 위임
  • 코드 품질

    • 사용하지 않는 변수 쓰지 않기, 글로벌 스코프 함부로 다루지 않기 등
  • 설치

npm i -D eslint


// package.json
  "eslintConfig": {
    "extends": [
      "react-app",
      "airbnb",
      "prettier"
    ]
  },

규칙

// .eslintrc.js
module.exports = {
  rules: {
    "no-unexpected-multiline": "error", // "off"나 0은 끔, "warn"이나 1은 경고, "error"나 2는 오류.
  },
}

// npx eslint app.js 하면 오류 출력
  • 자동 교정 규칙(potentially fixable)

    • npx eslint app.js --fix

보통 기본 규칙을 많이 쓴다

module.exports = {
  extends: [
    "eslint:recommended", // 미리 설정된 규칙 세트을 사용한다
  ],
} // airbnb / standard

Prettier

  • ESLINT의 포맷팅과 겹치지만 조금 더 일관적으로 다듬음
  • 품질 역할은 안함

npm i -D prettier
npx prettier app.js --write // 재작성함 아니면 터미널 출력

보통 둘을 통합해서 쓴다

  1. eslint 규칙 끄기
    npm i -D eslint-config-prettier
// .eslintrc.js
{
  extends: [
    "eslint:recommended",
    "eslint-config-prettier"
  ]
}

npx prettier app.js --write && npx eslint app.js --fix

  1. 프리티어 규칙을 ESLint에 추가
    npm i -D eslint-plugin-prettier
// .eslintrc.js
{
  plugins: [
    "prettier"
  ],
  rules: {
    "prettier/prettier": "error"
  },
}

// npx eslint app.js --fix


// 더 단순한 설정
// .eslintrc.js
{
  "extends": [
    "eslint:recommended",
    "plugin:prettier/recommended"
  ]
}

Husky

  • 커밋 전에 수행

  • npm i -D husky
    npm i -D lint-staged // 변경된 놈만...
// package.json
{
  "husky": {
    "hooks": {
      "pre-commit": "pre-commit": "lint-staged"
    }
  }
  ,  "lint-staged": {
    "*.js": "eslint --fix"
  }
}

VSCODE Extension

- vscode Extension 사용 시 eslint를 키는 법

- 프리티어는 Extension 설치 후 .prettierrc 설정하면 포맷 시 정리됨.

// .vscode/settings.json:
{
    "eslint.enable": true,
    "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
    }
}

// .prettierrc

{
  "trailingComma": "all",
  "tabWidth": 2,
  "semi": true,
  "singleQuote": true
}

 

반응형