# 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 μ€μΉ λ° μ€ννκΈ°
Extensions(mac :
command + shift + x
, window :control + shift + x
)μμ Prettierλ₯Ό μ€μΉν©λλ€.μ€μΉκ° μλ£λλ©΄ command + pλ₯Ό λλ₯΄κ³
> Format Document
λ₯Ό μ€νν©λλ€.
# vscodeμμ μ μ₯(command + s)μ μλμΌλ‘ prettier μ€ννκΈ°
command + ,λ₯Ό λλ₯΄κ³ κ²μμ
format on save
λ₯Ό μ λ ₯ν©λλ€.Editor: Format on Save
λ₯Ό 체ν¬νκ³ vscodeλ₯Ό μ¬λΆν ν©λλ€.λ§μ½ μ μ₯μ ν¬λ§·ν μ΄ μλλ€λ©΄ λ€μ
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)λ₯Ό μ°Έκ³ νμΈμ.
μμμ μ€λͺ λλ¦°
ν¬λ§·ν ν prettier μ€μ νμΌ μμ±νκΈ°
μ λ§λλλ€.κ΄λ ¨ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉν©λλ€.
yarn add -D husky@4 lint-staged prettier
- 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"
]
},
}
- huskyλ₯Ό μ€μΉν©λλ€.
yarn init-husky
μ΄ν μμ±λ .husky
νμΌ νμμ pre-commit
μ΄λΌλ νμΌμ νλ μμ±νκ³ μλ μ½λλ₯Ό λ£μ΅λλ€.
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
yarn lint-front
μ΄ν λ€λ₯Έ νμΌμ λ³κ²½νκ³ commit νλ©΄ νμΌμ΄ ν¬λ§·ν λμ΄ commit λλμ§ νμΈν©λλ€.
λ§μ½ μλμ κ°μ μλ¬λ‘ commitμ΄ μ€ν¨ νλ€λ©΄ ν°λ―Έλμ μλ μ½λλ₯Ό λ£μ΅λλ€.
κΉ ν μ€ν κΆνμ λΆμ¬νλ μ½λμ λλ€.
chmod ug+x ./husky/*
chmod ug+x .git/hooks/*
- vscodeλ₯Ό μ¬λΆν νκ³ λ€μ νμΌμ λ³κ²½νμ¬ commit ν©λλ€.
β ESLint & Prettier NPM vs Yarn β