Prettier

dwellยท2022๋…„ 4์›” 28์ผ
1

Prettier is a code formatter

๐Ÿ”ทย VSCode Settings


: ๋ณ„๋„์˜ 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",
}

Screen Shot 2022-11-05 at 2.02.19 PM.png

๐Ÿ”ทย VSCode Extension


Prettier - Code formatter - Visual Studio Marketplace

์œ„์˜ extension์„ ์„ค์น˜ํ•˜๋ฉด ์ข€ ๋” ๋งŽ์€ formatting์„ ์†์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. extension์„ ์„ค์น˜ํ•œ ํ›„์— ํ•ด์•ผํ•  ์„ค์ •๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. cmd + , ๋ฅผ ํ†ตํ•ด์„œ settings ํƒญ์— ๋“ค์–ด๊ฐ„๋‹ค.

  2. format on save๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •์„ ํ•œ๋‹ค.

    ์ด ์„ค์ •์€ ํŒŒ์ผ์„ ์ €์žฅํ–ˆ์„ ๋•Œ formatting (prettier)์ด ์ž‘๋™๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

    ์ด๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์œผ๋ฉด script๋ฅผ ์“ฐ๊ณ  ๊ทธ๊ฒƒ์„ ๋งค๋ฒˆ ์‹คํ–‰ํ•ด์„œ formatting์„ ํ•ด์•ผํ•˜๋Š”๋ฐ ๋„ˆ๋ฌด ๊ท€์ฐฎ์€ ์ž‘์—…์ด๋‹ค!

    Screen Shot 2022-11-05 at 2.17.39 PM.png

  3. 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)
  1. settings.json ์„ ์—ด์–ด์„œ ์ด์ œ ์›ํ•˜๋Š” prettier ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

    option๋“ค์€ ์•„๋ž˜ ๋งํฌ์—์„œ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

    Options ยท Prettier

    ๋งŒ์•ฝ ๊ฐ๊ฐ์˜ option๋“ค์ด ์ •ํ™•ํžˆ ์–ด๋–ค ์ฐจ์ด๋ฅผ ์ฃผ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด ๊ณต์‹๋ฌธ์„œ์—์„œ ์ œ๊ณตํ•˜๋Š” playground๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ๊ฐ๊ฐ์˜ option๋“ค์˜ ๊ธฐ๋ณธ๊ฐ’์€ ๋ฌด์—‡์ด๊ณ  option๋“ค์„ ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ ์–ด๋–ค ์ฐจ์ด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”์ง€ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋งˆ์Œ์— ๋“œ๋Š” option๋“ค์„ ์„ ํƒํ–ˆ๋‹ค๋ฉด ๋งจ ํ•˜๋‹จ์— copy config json ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์ตœ์ข… option๋“ค์„ vscode settings.json์œผ๋กœ ๋ณต๋ถ™๊ฐ€๋Šฅํ•˜๋‹ค.

    Prettier

    ๋˜ํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์–ด๋–ป๊ฒŒ ์“ฐ๋Š”์ง€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ๊ตฌ๊ธ€๋งํ•ด์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ๊ฒƒ์„ ์ฐธ๊ณ ํ•ด์„œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋„ ์ถ”์ฒœํ•œ๋‹ค. ์ผ๋‹จ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ๋„ฃ์€ ํ›„ 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"
    }

๐Ÿ”ทย Prettierrc ํŒŒ์ผ


๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์œ„์—์„œ ์„ค๋ช…ํ•œ 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๋ช…์„ ์“ด๋‹ค๋Š” ์ ์ด๋‹ค.

How to configure Prettier and VSCode

profile
code for a change

0๊ฐœ์˜ ๋Œ“๊ธ€