Prettier is a code formatter
: ๋ณ๋์ extension ์์ด๋ vscode๋ด์์ ์ ๊ณตํ๋ settings๋ฅผ ์ค์ ํด์ prettier์ ๊ฐ์ code formatting์ ํ ์ ์๋ค.
command + ,
๋ฅผ ํตํด์ settings ํญ์ ๋ค์ด๊ฐ๋ฉด commonly used์์ tab, quote style๊ณผ ๊ฐ์ ๊ฒ์ ์ ํํ ์ ์๋ค. ๋ณด์ด์ง ์๋ ๊ฒฝ์ฐ์๋ ๊ฒ์๋ ๊ฐ๋ฅํ๋ค.
์ฒดํฌ๋ฐ์ค๋ ๋๋กญ๋ค์ด์ ์ด์ฉํด์ ์ ํ์ ํ ํ์๋ ์ฐ์ธก ์๋จ์ ์ฒซ๋ฒ์งธ ์์ด์ฝ์ ํด๋ฆญํ๋ฉด settings.json
ํ์ผ์ด ๋ณด์ผ ๊ฒ์ด๋ค. ๋ฐฉ๊ธ ์ค์ ํ ๊ฒ๋ค์ด json ํ์ผ๋ก ์ ์ฅ์ด ๋ ํํ์ธ๋ฐ ๋ฐ๋๋ก settings.json์ ์ฝ๋๋ฅผ ์์ฑํด์ ์ค์ ์ ํ ์๋ ์๋ค. ๊ทธ๋์ ์ํ๋ค๋ฉด ๋ค๋ฅธ ์ฌ๋์ ์ค์ ์ ๊ทธ๋๋ก ๋ณต๋ถํด์ ์ค์ ์ ์๋ฃํ ์๋ ์๋ค.
{
"editor.tabSize": 2,
"javascript.preferences.quoteStyle": "single",
"typescript.preferences.quoteStyle": "single",
}
Prettier - Code formatter - Visual Studio Marketplace
์์ extension์ ์ค์นํ๋ฉด ์ข ๋ ๋ง์ formatting์ ์์ฝ๊ฒ ํ ์ ์๋ค. extension์ ์ค์นํ ํ์ ํด์ผํ ์ค์ ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
cmd + ,
๋ฅผ ํตํด์ settings ํญ์ ๋ค์ด๊ฐ๋ค.
format on save๋ฅผ ๊ฒ์ํด์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ์ ํ๋ค.
์ด ์ค์ ์ ํ์ผ์ ์ ์ฅํ์ ๋ formatting (prettier)์ด ์๋๋๋๋ก ํ๋ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ํ์ง ์์ผ๋ฉด script๋ฅผ ์ฐ๊ณ ๊ทธ๊ฒ์ ๋งค๋ฒ ์คํํด์ formatting์ ํด์ผํ๋๋ฐ ๋๋ฌด ๊ท์ฐฎ์ ์์ ์ด๋ค!
default formatter๋ ์ค์นํ prettier๋ก ๋ฐ๊ฟ์ค๋ค.
prettier extension์ ์ค์นํ์ง ์์ผ๋ฉด ์๋ณด์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ์ค์น๋ฅผ ํด์ค ํ์ ์ค์ ์ ํด์ผํ๋ค.
format on save๋ฅผ ํ ๋ ์ด๋ค formatter์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฉ์ํฌ ๊ฒ์ธ์ง ์ค์ ํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
![Screen Shot 2022-11-05 at 2.23.07 PM.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/da788c97-8eb7-473b-b78a-8d2faca205a2/Screen_Shot_2022-11-05_at_2.23.07_PM.png)
settings.json
์ ์ด์ด์ ์ด์ ์ํ๋ prettier ์ฝ๋๋ฅผ ์์ฑ์ ํด์ฃผ๋ฉด ๋๋ค.
option๋ค์ ์๋ ๋งํฌ์์ ํ์ธ์ด ๊ฐ๋ฅํ๋ค.
๋ง์ฝ ๊ฐ๊ฐ์ option๋ค์ด ์ ํํ ์ด๋ค ์ฐจ์ด๋ฅผ ์ฃผ๋์ง ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด ๊ณต์๋ฌธ์์์ ์ ๊ณตํ๋ playground๋ฅผ ์ฌ์ฉํด๋ณด๋ ๊ฒ์ ์ถ์ฒํ๋ค. ๊ฐ๊ฐ์ option๋ค์ ๊ธฐ๋ณธ๊ฐ์ ๋ฌด์์ด๊ณ option๋ค์ ๋ณ๊ฒฝํ์ ๋ ์ด๋ค ์ฐจ์ด๋ฅผ ๊ฐ์ ธ์ค๋์ง ๋์ผ๋ก ํ์ธํ ์ ์๋ค. ๋ง์ง๋ง์ผ๋ก ๋ง์์ ๋๋ option๋ค์ ์ ํํ๋ค๋ฉด ๋งจ ํ๋จ์ copy config json
๋ฒํผ์ ํด๋ฆญํ๋ฉด ์ต์ข
option๋ค์ vscode settings.json์ผ๋ก ๋ณต๋ถ๊ฐ๋ฅํ๋ค.
๋ํ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ด๋ป๊ฒ ์ฐ๋์ง ๊ถ๊ธํ๋ค๋ฉด ๊ตฌ๊ธ๋งํด์ ๋ค๋ฅธ ์ฌ๋๋ค ๊ฒ์ ์ฐธ๊ณ ํด์ ์์ฑํ๋ ๊ฒ๋ ์ถ์ฒํ๋ค. ์ผ๋จ ๋ณต์ฌํด์ ๋ถ์ฌ๋ฃ์ ํ option์ hoverํ๋ฉด vscode์์ ํด๋น option์ด ๋ฌด์์ ์๋ฏธํ๋์ง ๊ฐ๋จํ๊ฒ ์๋ ค์ฃผ๊ธฐ๋ ํ๋ค!
์ฃผ์ํ ๊ฒ์ vscode extension prettier์ผ ๊ฒฝ์ฐ settings.json์์ ์์ฑํ๋ฉฐ option๋ช
๋ค ์์ prettier.
์ด ๋ถ์ธ๋ค. ํ์ฌ ๋์ settings.json์ ๊ณต์ ํ์๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
{
"prettier.useEditorConfig": false, //editorConfig ์ฌ์ฉํ ์ง ์ฌ๋ถ (์๋์ ์ค๋ช
..)
"prettier.printWidth": 120, //์ฝ๋ ํ์ค์ ์ต๋ ๊ธธ์ด ์ค์ (๊ธฐ๋ณธ๊ฐ:80)
"prettier.tabWidth": 2, //tab ๊ฐ๊ฒฉ ์ค์ (๊ธฐ๋ณธ๊ฐ:2)
"prettier.useTabs": true, //tab ์ฌ์ฉ์ฌ๋ถ ์ค์ (๊ธฐ๋ณธ๊ฐ: false)
"prettier.semi": true, //๋งจ๋ค์ semicolon ์ฌ๋ถ ์ค์ (๊ธฐ๋ณธ๊ฐ: true)
"prettier.singleQuote": true, //quote style ์ค์ (๊ธฐ๋ณธ๊ฐ: false)
"prettier.trailingComma": "all", //๋ฐฐ์ด, ๊ฐ์ฒด, ํจ์ ๋ฑ์ ๋ง์ง๋ง์ , ์ฌ๋ถ ์ค์ (๊ธฐ๋ณธ๊ฐ: es5)
"prettier.bracketSpacing": true, //{} ์ฌ์ด์ spacing ์ค์ ์ฌ๋ถ (๊ธฐ๋ณธ๊ฐ: true)
"prettier.bracketSameLine": false, // > ๋ฅผ ๊ฐ์ ์ค์ ๋ฃ์์ง ์ฌ๋ถ (๊ธฐ๋ณธ๊ฐ: false)
"prettier.arrowParens": "avoid", //arrow function์ parameter์ ๊ดํธ ์ค์ ์ฌ๋ถ (๊ธฐ๋ณธ๊ฐ: always)
"prettier.endOfLine": "auto", //os๋ง๋ค ์ฐจ์ด๊ฐ ์๋ ์ค์ ๋ง์ง๋ง์ ํต์ผ ์์ผ์ฃผ๋ ์ค์ (๊ธฐ๋ณธ๊ฐ: lf)
}
๋ํ, ์์ 1-3 ๋จ๊ณ๊ฐ ๋ฒ๊ฑฐ๋ก์ฐ๋ฉด setting.json์ ๋ฐ๋ก ์ฝ๋๋ก ์์ฑํ ์๋ ์๋ค.
1-3 ๋จ๊ณ๋ฅผ ๋ฒ์จ ๊ฑฐ์ณค๋ค๋ฉด ์ด๋ฏธ ์๋์ ๊ฐ์ ์ฝ๋๊ฐ ์์ ๊ฒ์ด๋ค.
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ํ๋ ๊ฒฝ์ฐ์๋ ์์์ ์ค๋ช ํ extension์ด๋, vscode ์์ฒด ์ค์ ์ ์ด์ฉํ๋ฉด ๋๋ค. ํ์ง๋ง, ์ฌ๋ฌ๋ช ๊ณผ ๊ฐ์ด ํ์ ์ ํ๊ฒ ๋๋ ๊ฒฝ์ฐ์ ๊ฐ๊ธฐ ๋ค๋ฅธ code formatting์ ์ด์ฉํ๊ฒ ๋๋ฉด ์ฝ๋๊ฐ ํต์ผ์ฑ ์์ด ๋ณด์ผ ์ ์๋ค. ๊ทธ๋์ ์ฌ๋ฌ๋ช ์ด์ ํจ๊ป ํ๋ ํ๋ก์ ํธ์ผ ๊ฒฝ์ฐ ๊ฐ์ prettier option์ ๊ณต์ ํ์ฌ ์ฝ๋์ ํต์ผ์ฑ์ ์ค๋ค.
ํ ํ๋ก์ ํธ์์ ์ฐ๋ prettier option์ ์์์ ํ๋ ๋ฐฉ์์ฒ๋ผ settings.json์ ๋ณต๋ถํด์ ์ฌ์ฉํด๋ ๋์ง๋ง ํ๋ก์ ํธ ์ฌ๋ฌ๊ฐ์ผ ๊ฒฝ์ฐ ์ฌ๋ฌ ๋ฒ์ ์ prettier option์ ๋์์ ์ฌ์ฉ๋ถ๊ฐ๋ฅํ๋ค. ์ด๋, ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋ก .prettierrc
ํ์ผ์ด๋ค.
ํ๋ก์ ํธ์ .prettierrc
ํ์ผ์ ๋ง๋ค์ด์ ํด๋น ํ์ผ์์ ํ์๋ค์ด ๊ณตํต์ผ๋ก ์ฌ์ฉํ prettier option๋ค์ ์ ์ผ๋ฉด ๋๋ค. ๊ทธ๋ฌ๋ฉด ํ๋ก์ ํธ๋ฅผ vscode์์ ์ด์ด์ ์์
์ ํ๋ฉด vscode๊ฐ ์๋์ ์ผ๋ก ๋ด๋ถ์์ ์ค์ ํ prettier option๋ค์ ๋ฌด์ํ๊ณ .prettierrc์ ์ ์๋ prettier option๋ค์ ํ ๋๋ก formatting์ ํ๋ค.
โ prettier ์ ์ฉ ์ฐ์ ์์ : .prettierrc
> .editorconfig
> settings.json
์์ ๊ฐ์ ์ฐ์ ์์๊ฐ ์ ์ฉ๋๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์ฌ๊ธฐ์ ์ฃผ์ํ ๊ฒ์ settings.json ๊ณผ prettierrc๊ฐ merge ๋๋ ํ์์ด ์๋๋ผ์ prettierrc๊ฐ ์ ์ฉ๋ ๋ settings.json์ด ์์ ๋ฌด์๊ฐ ๋๋ค.
์์์ settings.json์ useEditorConfig๋ผ๋ prettier option์ false๋ก ์ค์ ํ๋๋ฐ ์ด๊ฒ์ด ๋ฐ๋ก .editorconfig
ํ์ผ์ ์ ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ์ค์ ํ๋ ๊ฒ์ด๋ค. ์ฃผ๋ก ์ฐ์ด์ง ์๊ธฐ ๋๋ฌธ์ false๋ก ์ค์ ํ์ง๋ง ๋ง์ฝ ํ์ํ ๊ฒฝ์ฐ true๋ก ์ค์ ํ ์ ์๋ค.
{
"printWidth": 120,
"useTabs": true,
"tabWidth": 4,
"semi": true,
"singleQuote": true,
"trailingComma": "all",
"bracketSpacing": true,
"bracketSameLine": false,
"arrowParens": "avoid",
"endOfLine": "auto"
}
์ด์ ์ vscode prettier extension ์ค์ ๊ณผ ๋ค๋ฅธ ์ ์ ์์ prettier.
์ด ๋ถ์ง ์๊ณ ๋ฐ๋ก option๋ช
์ ์ด๋ค๋ ์ ์ด๋ค.