4. ESLint, Prettier
이 문서는 ESLint와 Prettier를 설정하여 JavaScript 또는 TypeScript 기반의 프로젝트에서 코드 품질을 향상시키는 방법에 대한 안내입니다. 먼저 ESLint와 Prettier를 설치하고 기본적인 설정을 추가하는 방법을 설명합니다. 이후 Tailwind CSS와의 충돌을 방지하기 위한 설정 및 예외 처리도 다룹니다. ※ 본 페이지는 일반적인 ESLint·Prettier 설정 흐름을 설명합니다. X2BEE FO/BO의 실제 구성은 .eslintrc.js(module.exports · parser @typescript-eslint/parser · extends: eslint:recommended, plugin:react/recommended, plugin:@typescript-eslint/recommended, plugin:prettier/recommended)와 .prettierrc(semi: false · singleQuote: true · trailingComma: es5 · prettier-plugin-tailwindcss)이며, 패키지 매니저는 yarn 입니다.
ESLint config — Tailwind CSS 검사 추가
pnpm으로 eslint-plugin-tailwindcss를 설치합니다.
$ pnpm add eslint-plugin-tailwindcsseslint-plugin-tailwindcss는 Tailwind 유틸리티 클래스의 유효성(올바른 클래스 사용 여부)과 충돌하는 속성(예: className="flex grid")을 검사해줍니다.
.eslintrc.json에 plugin:tailwindcss/recommended를 추가합니다:
{
"extends": ["next/core-web-vitals", "standard", "plugin:tailwindcss/recommended"]
}Prettier 설정 및 Tailwind 정렬 플러그인
pnpm으로 prettier 관련 패키지를 설치합니다.
$ pnpm add prettier eslint-config-prettier prettier-plugin-tailwindcsseslint-config-prettier는 ESLint와 Prettier 간 중복 규칙을 비활성화하여 충돌을 방지합니다.
.eslintrc.json에 prettier와 예외 규칙을 추가합니다:
{
"extends": [
"next/core-web-vitals",
"standard",
"plugin:tailwindcss/recommended",
"prettier"
],
"rules": {
"no-undef": "off",
"spaced-comment": "off",
"tailwindcss/classnames-order": "off"
}
}rules 설명:
no-undef: React 17+에서
import React from 'react'생략 시 발생할 수 있는 경고 예외 처리spaced-comment: 주석 관련 lint 경고 예외 처리
tailwindcss/classnames-order: 커스텀 className과 Tailwind 공식 순서 규칙 충돌로 인한 예외 처리
추가로 Prettier 설정 파일(.prettierrc)을 생성합니다:
{
"printWidth": 80,
"tabWidth": 2,
"semi": false,
"singleQuote": true,
"useTabs": false,
"endOfLine": "auto",
"trailingComma": "es5",
"arrowParens": "always",
"bracketSpacing": true,
"htmlWhitespaceSensitivity": "css",
"jsxBracketSameLine": false,
"jsxSingleQuote": false,
"tsxSingleQuote": false,
"proseWrap": "preserve",
"quoteProps": "as-needed",
"vueIndentScriptAndStyle": true,
"requirePragma": false,
"plugins": ["prettier-plugin-tailwindcss"]
}마지막 업데이트