Ted's Codding study

JS/TS의 코드 퀄리티 향상과 스타일 유지를 위한 도구 본문

TypeScript

JS/TS의 코드 퀄리티 향상과 스타일 유지를 위한 도구

Ted93 2024. 6. 11. 16:40
  • 플러그인(확장) 기능만 사용

ESLint

1. 정의 및 목적

  • 자바스크립트 코드의 문제를 식별하고 보고하기 위한 도구
  • 정적 분석 도구의 한 형태로, 코드 실행 전에 코드를 검사하여 일반적인 실수, 버그, 스타일 오류, 또는 안티패턴을 찾음

 

2. 기능

  • 규칙 기반 시스템: ESLint는 수많은 규칙을 제공하며, 사용자는 이 규칙들을 켜거나 끌 수 있고, 규칙의 엄격함을 조정
  • 플러그인과 확장성: ESLint는 React, Vue, TypeScript 등 다양한 프레임워크와 라이브러리를 지원하기 위해 플러그인을 사용
  • 커스터마이징: 프로젝트의 필요에 맞게 규칙을 추가하거나 수정하여 사용자 정의 규칙 생성 가능
  • 자동 수정: 일부 규칙 위반에 대해 ESLint는 자동으로 코드를 수정할 수 있는 옵션을 제공

 

Prettier

1. 정의 및 목적

  • 코드 포맷터로, 코드의 기능성에 영향을 주지 않으면서 일관된 스타일을 적용하여 코드를 더 읽기 쉽고 일관적으로 작동하게 하는 도구

 

2. 기능

  • 지원 언어: JavaScript, TypeScript, CSS, HTML, JSON 등 다양한 언어와 파일 형식 지원
  • 강제 스타일: Prettier는 스타일에 관한 옵션이 제한적이므로 개발자 간의 스타일 논쟁 축소 단, Prettier가 제시하는 스타일 강제 적용
  • 통합: 대부분의 코드 에디터와 IDE에 플러그인 형태로 쉽게 통합할 수 있으며, 저장 시 자동으로 포맷을 적용하도록 설정 가능

 

3. ESLint와 Prettier 함께 사용하기

  • ESLint와 Prettier는 서로 다른 목적으로 사용되지만, 함께 사용하면 코드의 품질과 일관성을 동시에 관리 가능
  • ESLint는 코드 품질과 문제점을 중점으로, Prettier는 코드 스타일을 일관되게 유지
  • eslint-plugin-prettier와 eslint-config-prettier를 통해 충돌 없이 통합 가능

 

ESLint & Prettier 환경 설정

  • 타입스크립트 설치된 프로젝트 기준
npm init -y
npm install typescript --save-dev
npx tsc --init

 

1. 프로젝트의 루트 디렉터리에서 필요한 패키지를 설치

  • 한 줄에 작성해야 함
npm install --save-dev eslint @typescript-eslint/parser 
@typescript-eslint/eslint-plugin prettier 
eslint-config-prettier eslint-plugin-prettier

 

2. ESLint 설정 파일 생성 및 설정

  • 프로젝트 루트 디렉터리에 .eslintrc.js 파일 생성 : 아래 내용 추가
module.exports = {
  parser: '@typescript-eslint/parser',
  extends: [
    'eslint:recommended',
    'plugin:@typescript-eslint/recommended',
    'prettier',
    'plugin:prettier/recommended',
  ],
  parserOptions: {
    ecmaVersion: 2020,
    sourceType: 'module',
  },
env: {
  browser: true, // 브라우저 환경 설정
  node: true, // Node.js 환경 설정
  es2021: true, // ES2021 전역 변수 사용 가능
},
  rules: {
    '@typescript-eslint/explicit-function-return-type': 'off',
    '@typescript-eslint/no-explicit-any': 'warn',
    'prettier/prettier': ['error', { endOfLine: 'auto' }],
  },
};

 

3. Prettier 설정 파일 생성 및 설정

  • 프로젝트 루트 디렉터리에 .prettierrc 파일 생성 : 아래 내용 추가
{
  "singleQuote": true,
  "semi": true,
  "useTabs": false,
  "tabWidth": 2,
  "trailingComma": "all",
  "printWidth": 200,
  "endOfLine": "auto"
}

 

4. ESLint와 Prettier를 통합하기 위한 설정

4-1) .eslintignore 파일 생성

  • ESLint가 무시할 파일과 디렉토리를 지정
node_modules
dist

 

4-2) Prettier 통합

  • .prettierignore 파일 생성, 무시할 파일과 디렉토리를 지정
node_modules
dist

 

5. VSCode 설정 (선택 사항)

  • Visual Studio Code 사용 시, ESLint와 Prettier를 자동으로 실행하도록 설정
  • VSCode의 설정 파일(.vscode/settings.json)에 다음 설정 추가
{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact"
  ],
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit"
  }
}

 

6. package.json에 스크립트 추가

  • package.json 파일에 ESLint와 Prettier 실행 스크립트를 추가
{
  "scripts": {
    "lint": "eslint src/**/*.{ts,tsx}",
    "format": "prettier --write 'src/**/*.{ts,tsx,js,json}'"
  }
}

 

7. 프로젝트 구조에 따른 실행

  • src 디렉토리에 있는 TypeScript 파일을 검사하고 포맷팅하는 명령어
  • ESLint 실행
npm run lint
  • Prettier 실행
npm run format

 

8. prettier 만 설정

8-1) Prettier를 개발 의존성으로 설치

npm install --save-dev prettier

 

8-2) Prettier 설정 파일 생성

  • 프로젝트 루트 디렉터리에 .prettierrc 파일을 생성하고 원하는 설정을 추가

 

8-3) Prettier 무시 파일 생성

  • 프로젝트 루트 디렉터리에 .prettierignore 파일을 생성

 

8-4) 스크립트 추가

  • package.json 파일에 Prettier를 실행할 수 있는 스크립트를 추가
{
  "scripts": {
    "format": "prettier --write \\"src/**/*.{js,jsx,ts,tsx,json,css,scss,md}\\""
  }
}

 

8-5) prettier 실행

  • 터미널 또는 명령 프롬프트에서 아래 명령어를 실행하여 코드를 포맷
npm run format

 

8-6) VSCode와 연동

  • VSCode 확장 프로그램 설치
  • VSCode의 설정 파일(settings.json)에 다음 내용을 추가
{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode"
}

 

 

노션으로 보고 싶다면?

https://short-echidna-b16.notion.site/JS-TS-a87e84f1cbf94e2b9543063d29a09412?pvs=4

 

JS/TS의 코드 퀄리티 향상과 스타일 유지를 위한 도구 | Notion

목차

short-echidna-b16.notion.site