# Prettier μ„€μ • ν•˜κΈ°

ν˜‘μ—… μ‹œ, μ—λŸ¬λ₯Ό 쀄이고 일관적인 μ½”λ“œλ₯Ό μž‘μ„±ν•˜κΈ° μœ„ν•΄ μ½”λ“œ 포맷터 프리티어(Prettier)λ₯Ό μ‚¬μš©ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆλ‹€. Prettierλ₯Ό ν”„λ‘œμ νŠΈμ— μ„ΈνŒ…ν•˜λŠ” 방법과 commit 전에 전체 μ½”λ“œλ₯Ό λŒ€μƒμœΌλ‘œ prettierλ₯Ό μ‹€ν–‰ν•΄μ„œ ν¬λ§·νŒ… 후에 commit을 ν•˜λ„λ‘ ν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

# ν¬λ§·νŒ…ν•  prettier μ„€μ •νŒŒμΌ μƒμ„±ν•˜κΈ°

ν”„λ‘œμ νŠΈ 루트 λ””λ ‰ν† λ¦¬μ—μ„œ .prettierrc μƒμ„±ν•©λ‹ˆλ‹€.

{
  "singleQuote": true,
  "semi": true,
  "useTabs": false,
  "tabWidth": 2,
  "trailingComma": "all",
  "printWidth": 120,
  "parser": "babel",
  "bracketSpacing": true,
  "arrowParens": "avoid"
}

TIP

각 μ˜΅μ…˜μ— λŒ€ν•΄ μžμ„Ένžˆ μ•Œκ³  μ‹Άλ‹€λ©΄ prettier 곡식 μ‚¬μ΄νŠΈ (opens new window)λ₯Ό μ°Έκ³ ν•˜μ„Έμš”.

# vscodeμ—μ„œ prettier μ„€μΉ˜ 및 μ‹€ν–‰ν•˜κΈ°

  1. Extensions(mac : command + shift + x, window : control + shift + x)μ—μ„œ Prettierλ₯Ό μ„€μΉ˜ν•©λ‹ˆλ‹€.

  2. μ„€μΉ˜κ°€ μ™„λ£Œλ˜λ©΄ command + pλ₯Ό λˆ„λ₯΄κ³  > Format Documentλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

# vscodeμ—μ„œ μ €μž₯(command + s)μ‹œ μžλ™μœΌλ‘œ prettier μ‹€ν–‰ν•˜κΈ°

  1. command + ,λ₯Ό λˆ„λ₯΄κ³  검색에 format on saveλ₯Ό μž…λ ₯ν•©λ‹ˆλ‹€.

  2. Editor: Format on Saveλ₯Ό μ²΄ν¬ν•˜κ³  vscodeλ₯Ό μž¬λΆ€νŒ…ν•©λ‹ˆλ‹€.

  3. λ§Œμ•½ μ €μž₯μ‹œ ν¬λ§·νŒ…μ΄ μ•ˆλœλ‹€λ©΄ λ‹€μ‹œ command + ,λ₯Ό λˆ„λ₯΄κ³  검색창에 default formatterλ₯Ό κ²€μƒ‰ν•˜κ³  none으둜 λ˜μ–΄ 있으면 Prettier - Code formatter둜 λ³€κ²½ ν›„ μž¬λΆ€νŒ…ν•©λ‹ˆλ‹€.

# huskyλ₯Ό μ‚¬μš©ν•˜μ—¬ commit 전에 prettier 전체 νŒŒμΌμ— μ μš©ν•˜κΈ°

ν—ˆμŠ€ν‚€(husky)λ₯Ό μ‚¬μš©ν•˜λ©΄ Prettierλ₯Ό μ„€μΉ˜ν•˜μ§€ μ•Šμ•„λ„ commit 전에 lint-staged에 μ„€μ •λœ 파일 쀑에 λ³€κ²½λœ νŒŒμΌμ„ λŒ€μƒμœΌλ‘œ μžλ™μœΌλ‘œ ν¬λ§·νŒ…ν•˜μ—¬ commit ν•©λ‹ˆλ‹€.

TIP

huskyλŠ” git hook을 μ‰½κ²Œ 관리할 수 μžˆλŠ” λ„κ΅¬μž…λ‹ˆλ‹€. git push, commit 등이 μ‹œν–‰λ˜κΈ° μ „μ΄λ‚˜ 후에 μ›ν•˜λŠ” 슀크립트λ₯Ό μ‹€ν–‰μ‹œμΌœμ€λ‹ˆλ‹€. 더 μžμ„Έν•œ λ‚΄μš©μ„ μ•Œκ³  μ‹Άλ‹€λ©΄ husky 곡식 μ‚¬μ΄νŠΈ (opens new window)λ₯Ό μ°Έκ³ ν•˜μ„Έμš”.

  1. μœ„μ—μ„œ μ„€λͺ…λ“œλ¦° ν¬λ§·νŒ…ν•  prettier μ„€μ •νŒŒμΌ μƒμ„±ν•˜κΈ°μ„ λ§Œλ“­λ‹ˆλ‹€.

  2. κ΄€λ ¨ 라이브러리λ₯Ό μ„€μΉ˜ν•©λ‹ˆλ‹€.

yarn add -D husky@4 lint-staged prettier
  1. package.json에 μ•„λž˜μ™€ 같이 μΆ”κ°€ν•©λ‹ˆλ‹€.
{
  ...
  "scripts": {
    ...
    "init-husky": "npx husky install .husky",
    "lint-front": "lint-staged"
  },
  "lint-staged": {
    // λ³€κ²½λœ js, vue, json, md νŒŒμΌμ„ λŒ€μƒμœΌλ‘œ prettierλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
    "src/**/*.{js,json,md}": [
      "prettier --write",
      "git add"
    ]
  },
}

  1. huskyλ₯Ό μ„€μΉ˜ν•©λ‹ˆλ‹€.
yarn init-husky

이후 μƒμ„±λœ .husky 파일 ν•˜μœ„μ— pre-commitμ΄λΌλŠ” νŒŒμΌμ„ ν•˜λ‚˜ μƒμ„±ν•˜κ³  μ•„λž˜ μ½”λ“œλ₯Ό λ„£μŠ΅λ‹ˆλ‹€.

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

yarn lint-front

  1. 이후 λ‹€λ₯Έ νŒŒμΌμ„ λ³€κ²½ν•˜κ³  commit ν•˜λ©΄ 파일이 ν¬λ§·νŒ… λ˜μ–΄ commit λ˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

  2. λ§Œμ•½ μ•„λž˜μ™€ 같은 μ—λŸ¬λ‘œ commit이 μ‹€νŒ¨ ν•œλ‹€λ©΄ 터미널에 μ•„λž˜ μ½”λ“œλ₯Ό λ„£μŠ΅λ‹ˆλ‹€.

husky μ—λŸ¬

κΉƒ ν›… μ‹€ν–‰ κΆŒν•œμ„ λΆ€μ—¬ν•˜λŠ” μ½”λ“œμž…λ‹ˆλ‹€.

chmod ug+x ./husky/*
chmod ug+x .git/hooks/*
  1. vscodeλ₯Ό μž¬λΆ€νŒ…ν•˜κ³  λ‹€μ‹œ νŒŒμΌμ„ λ³€κ²½ν•˜μ—¬ commit ν•©λ‹ˆλ‹€.