π 리μ‘νΈμμ ESlint + Prettier + Airbnb Style νλ°©μ μ ν νκΈ°
Design by @imrahelk
μλ νμΈμ. μνΌκ³€μ λλ€.
νμ μΌλ‘ κ°λ°ν λλ μ½λ© μ€νμΌκ³Ό μ½λ κ°λ μ±μ΄ λ§€μ° μ€μν©λλ€. μ΄κ±Έ μ’λ νΈνκ² ν μ μλ λκ΅¬κ° μμ΄μ μκ°ν©λλ€. ESLintλ μλ°μ€ν¬λ¦½νΈ λ¬Έλ²μ κ²μ¬ν΄μ€λλ€. κ·Έλ¦¬κ³ Prettierλ μμ±λ μ½λλ₯Ό κ·μΉμ λ°λΌ μ΄μκ² μ 리ν΄μ€λλ€.
μ κ° μ£Όλ‘ μ¬μ©νλ VSCode μλν°λ₯Ό κΈ°μ€μΌλ‘ μ€λͺ ν©λλ€. λΉμ·ν λ€λ₯Έ μλν°λ μ€μ λ°©μμ΄ λΉμ·ν κ²μ΄λΌκ³ μκ°ν©λλ€.
VSCodeλ₯Ό μ€ννκ³ ESLintμ Prettier μ΅μ€ν
μ
μ μ€μΉν©λλ€.
ESLint μ€μΉνκΈ°
μ€μΉλ§ν¬: https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint
Prettier μ€μΉνκΈ°
μ€μΉλ§ν¬: https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode
νλ‘μ νΈμ μ μ©νκΈ°
볡μ‘ν μ€μ μ κ°λΌ~! μ΄κ² λ°λ‘ 리μ‘νΈμ λ§€λ ₯μ
λλ€. γ
ESLintμ Prettierμ 볡μ‘ν μ€μ μ νλ°©μ ν μ μλ λ©μ§ μ μ€ν¬λ¦½νΈκ° μμ΅λλ€. κ°λ°μλ Paulo Ramosμ
λλ€.
μΆμ²: https://github.com/paulolramos/eslint-prettier-airbnb-react
νλ‘μ νΈ λ£¨νΈ λλ ν 리μμ λ€μ λͺ λ Ήμ μνν©λλ€.
exec 3<&1;bash <&3 <(curl https://raw.githubusercontent.com/paulolramos/eslint-prettier-airbnb-react/master/eslint-prettier-config.sh 2> /dev/null)
μ€ν¬λ¦½νΈκ° bash μμ λλ€. κ·Έλμ μλμ°μμ μ€μ νκΈ° μν΄μλ Ubuntu Appκ° νμν κ²μ΄λΌκ³ μκ°λ©λλ€.
μ λͺ λ Ήμ΄λ₯Ό μ€ννλ©΄ μλμ κ°μ νλ©΄μ΄ μΆλ ₯λ©λλ€.
μ λ ν¨ν€μ§ λ§€λμ λ₯Ό yarnμ μ ννμμ΅λλ€. κ·Έλ¦¬κ³ μ€μ νμΌ νμ μ .json. ν λΌμΈμ κΈΈμ΄λ 80. νν μ½€λ§ μ€νμΌμ allλ₯Ό μ ννμμ΅λλ€. λ³ΈμΈμ μ½λ© μ€νμΌμ λ§κ² μ ννμλ©΄ λ©λλ€. Trailing Commaλ μ΄ν΄λ₯Ό λκΈ° μν΄ μ μ€λͺ λμ΄ μλ λΈλ‘κ·Έλ₯Ό μκ°ν©λλ€: https://heygyun.tistory.com/49
μ€μΉκ° μλ£λλ©΄ .eslintrc.json μ .prettierrc.json νμΌμ΄ μμ±λ©λλ€. κ·Έλ¦¬κ³ .prettierrc.json νμΌμ μ΄μ΄λ³΄λ©΄ λ€μ λ΄μ©μ΄ μ
λ ₯λμ΄ μμ΅λλ€.
{
"printWidth": 80,
"singleQuote": true,
"trailingComma": "all"
}
μ
λ ₯λμ΄ μλ λ΄μ©μ μ μ€ν¬λ¦½νΈμμ μ°λ¦¬κ° μ νν μ΅μ
μ
λλ€.
printWidthλ ν λΌμΈμ κΈΈμ΄λ₯Ό μ€μ ν©λλ€. κ°λ μ±μ μν κΆμ₯ κΈΈμ΄λ 80μμ λλ€.singleQuoteλ λ¬Έμμ΄μ'λ₯Ό μ¬μ©ν©λλ€.trailingCommaλ λ°°μ΄ ννμ μΌνκ° μΆκ°λ©λλ€.
μ λ λ€μ μ΅μ
μ μΆκ°νμμ΅λλ€.
"useTabs": false,
"tabWidth": 2,
"semi": true,
useTabsκ° falseμ΄λ©΄ λ€μ¬μ°κΈ°μ ν λμ μ μ€νμ΄μ€λ₯Ό μ¬μ©ν©λλ€.tabWidthλ λ€μ¬μ°κΈ° μ€νμ΄μ€ 곡백 κ°―μμ λλ€.semiλ μ½λ λμ μΈλ―Έμ½λ‘;μ μ¬μ©ν©λλ€.
Prettierμλ λ λ§μ μ΅μ
μ΄ μμ΅λλ€. λ μμΈν λ΄μ©μ Prettier 곡μ λ¬Έμ λ₯Ό μ°Έκ³ νμΈμ.
μ΄μ F1λ₯Ό λλ₯΄κ³ Format Documentsλ₯Ό μ ννλ©΄ μ½λκ° κΉλν΄μ§λλ€. λ¨μΆν€λ Shift + Option/Alt + F μ
λλ€.
νμΌ μ μ₯μ μλ μ μ©λκ² νκΈ°
μ½λ μ 리λ₯Ό μλμΌλ‘ ν΄λμΌλ©΄ λ§€μ° νΈλ¦¬ν©λλ€. μλ μ€μ κ³Όμ μ ν΅ν΄ νμΌ μ μ₯ν λ μ½λκ° μλμΌλ‘ μ 리λκ² ν΄λ³΄μΈμ.
Settingsμμ JavaScript Formatλ₯Ό κ²μν©λλ€. μλ°μ€ν¬λ¦½νΈ κΈ°λ³Έ ν¬λ§·ν° κΈ°λ₯μ λΉνμ±νν©λλ€. μ°λ¦¬λ Prettierλ₯Ό μ¬μ©νκΈ° λλ¬Έμ νμκ° μμ΅λλ€.
Settingsμμ Format On Saveμ κ²μν©λλ€. Editor: Format On Saveλ₯Ό νμ±νν©λλ€. κ·ΈλΌ μ μ₯ν λ μ½λλ₯Ό μλ ν¬λ©§ν ν΄μ€λλ€.
Settingsμμ Auto Fix On Saveμ κ²μν©λλ€. Eslint: Auto Fix on Saveλ₯Ό νμ±ν ν©λλ€.
settings.jsonμμ 보면 λ€μ μ½λκ° μΆκ°λμ΄ μμ΅λλ€.
{
"eslint.autoFixOnSave": true,
"editor.formatOnSave": true,
"javascript.format.enable": false
}
μ½λλ₯Ό μμ±νκ³ νμΌμ μ μ₯ν΄λ³΄μΈμ. κ·Έλ¬λ©΄ μλμ κ°μ΄ μ½λκ° κΉλνκ² μλμΌλ‘ μ 리λ©λλ€.
ν΄νΌ μ½λ©νμΈμ~!