티스토리 뷰

넥스트 프로젝트를 진행하면서 테일윈드를 사용하게 됐는데 발빠른 사람들이 tailwindcss의 클래스명을 정렬해주는 플러그인을 만들었길래 적용해보았다. 공식 repo에 가보면 class명을 어떤 순서로 자동으로 정렬해주는 지 설명해주기 때문에 README를 읽어보고 원하면 적용하는 것이 좋을 거 같다. 

 

아래는 prettier-plugin-tailwindcss 의 공식 repo이다. 

https://github.com/tailwindlabs/prettier-plugin-tailwindcss

 

GitHub - tailwindlabs/prettier-plugin-tailwindcss: A Prettier plugin for Tailwind CSS that automatically sorts classes based on

A Prettier plugin for Tailwind CSS that automatically sorts classes based on our recommended class order. - GitHub - tailwindlabs/prettier-plugin-tailwindcss: A Prettier plugin for Tailwind CSS tha...

github.com

 

문제상황

플러그인 설정 방법도 쉬운 거 같아서 바로 dev환경에 설치하고 적용해보았는데 class명이 sorting되지 않는 문제가 발생했다. 참고로 기존에 prettier를 설치하여 사용중이었고 해당 프로젝트에 .prettierrc 파일이 이미 존재하고 있었다. 

 

로컬 환경 

우선 설치한 버전들은 아래와 같다. 

//package.json

"dependencies": {
    "@types/node": "20.5.2",
    "@types/react": "18.2.20",
    "@types/react-dom": "18.2.7",
    "eslint": "8.47.0",
    "eslint-config-next": "13.4.19",
    "next": "13.4.19",
    "react": "18.2.0",
    "react-dom": "18.2.0",
    "typescript": "5.1.6"
  },
  "devDependencies": {
    "autoprefixer": "^10.4.15",
    "eslint-config-prettier": "^9.0.0",
    "eslint-plugin-prettier": "^5.0.0",
    "postcss": "^8.4.30",
    "prettier": "^3.0.2",
    "prettier-plugin-tailwindcss": "^0.5.4",
    "tailwindcss": "^3.3.3"
  }

원인이 될만한 패키지의 버전을 보면 아래와 같다. 

  • tailwindcss v3
  • prettier-plugin-tailwindcss v0.5
  • prettier v3

원인 추측

1. 설정을 건들인 것이므로 vscode를 재부팅하면 제대로 동작할 것이다 => X

2. 현재 prettier-plugin-tailwindcss가 prettier 3버전을 지원하지 않기 때문에 다운그레이드 해야한다. => X

  • REAMD에 보면 지원한다고 나와있다.

3. prettier에 추가적으로 class명 정렬을 하는 플러그인이기 때문에 prettier 세팅과 충돌이 있거나 프리티어가 인식하지 못하는 것이다. => O

 

Plugin not working · Issue #191 · tailwindlabs/prettier-plugin-tailwindcss

What version of prettier-plugin-tailwindcss are you using? "prettier": "^3.0.0", What version of Tailwind CSS are you using? "tailwindcss": "^3.3.3" What version of Node.js are you using? Node.js v...

github.com

원인을 보니 prettierrc의 확장자로 json을 명시해줘야하고 json에서는 정상동작하는 거 같았다.

 

.prettierrc => .prettierrc.json 으로 변경하니 정상동작하였다. 해결완료👧

{
  "printWidth": 80,
  "singleQuote": false,
  "trailingComma": "all",
  "useTabs": false,
  "arrowParens": "always",
  "bracketSpacing": true,
  "bracketSameLine": false,
  "endOfLine": "auto",
  "plugins": ["prettier-plugin-tailwindcss"]
}
댓글