Prettier๋?
์์ฑํ ์ฝ๋๋ฅผ ๋ณด๊ธฐ ์ข๊ณ ์ผ๊ด์ฑ ์๊ฒ ํฌ๋งคํ ํด์ฃผ๋ ๋๊ตฌ๋ก, ์ค๋ฐ๊ฟ, ๋ค์ฌ์ฐ๊ธฐ ๊ฐ๊ฒฉ, ์ธ๋ฏธ์ฝ๋ก /ํฐ๋ฐ์ดํ/์์๋ฐ์ดํ ์ฌ์ฉ ์ฌ๋ถ ๋ฑ์ ์ค์ ํ์ฌ ํ์ผ ์ ์ฅ ์๋ง๋ค or ๋จ์ถํค ์ ๋ ฅ ์๋ง๋ค ํ์์ ๋ง๊ฒ ๋ณด๊ธฐ ์ข๊ฒ ์ ๋ ฌํด์ฃผ๋ ํ์ฅ ํ๋ก๊ทธ๋จ!
Prettier ์ค์
๋จผ์ VSCode ์คํ ํ ์ข์ธก Extensions ํญ์์ Prettier๋ฅผ ์ค์นํ๋ค. ๋ค์ด๋ก๋ ์๊ฐ ๋งํด์ฃผ๋ ํธ์์ฑ...
์ดํ Ctrl + , ํค๋ฅผ ๋๋ฌ VSCode ์ค์ ์ฐฝ์ ์ฐ๋ค.
๋ค์๊ณผ ๊ฐ์ด editor: default fomatter๋ฅผ ๊ฒ์ํ ๋ค None์ผ๋ก ๋์ด์๋ ์ค์ ์ ๋ณ๊ฒฝํด์ผ ํ๋ค.
ํ์ผ ์ ์ฅ ์์๋ ์๋์ผ๋ก ์ ๋ ฌ์ด ๋๋๋ก editor: format on save mode๋ฅผ ๊ฒ์ํ ๋ค ์ถ๊ฐ๋ก ์ค์ ํด ์ค๋ค.
Prettier ์ค์ ์ ๋์ผํ๊ฒ Prettier๋ฅผ ๊ฒ์ํด์ ๊ฐ๋ฅํ๋, ํ ํ๋ก์ ํธ์์ ๋์ผํ ์ค์ ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ .prettierrc ํ์ผ์ ์์ฑํ์ฌ ํ ์ปจ๋ฒค์ ์ ๋ง๋ ์ ๋ ฌ์ ์ฌ์ฉํ ์ ์๋ค.
.prettierrc ํ์ผ ์ฌ์ฉ
npm์ ํตํด ์๋ฒ์ prettier๋ฅผ ์ค์นํ๋ค.
- --save-dev : ๋ฐฐํฌ์ ๋ฌด๊ดํ ๊ฐ๋ฐ ๊ด๋ จ ํจํค์ง์ธ ๊ฒฝ์ฐ
- --save-exact : ๋ฒ์ ์ด ๋ฌ๋ผ์ง๋ฉด์ ์๊ธฐ๋ ์คํ์ผ ๋ณํ๋ฅผ ๋ง๊ธฐ ์ํจ
$ npm install --save-dev --save-exact prettier
์ข ์์ฑ ์ถฉ๋(์๋ชป๋๊ณ ์ ์ฌ์ ์ผ๋ก ์์๋ ์ข ์์ฑ) ๋ฐ์ํ๋ ๊ฒฝ์ฐ, npm audit fix --force ๋ช ๋ น์ผ๋ก ํด๊ฒฐํ๋ค. npm audit ๋ช ๋ น์ dependency tree์ ๋ณด์ ์ทจ์ฝ์ ๊ณผ ํด๊ฒฐ ๋ฐฉ์์ ์ ๊ณตํ๋ค๋๋ฐ, npm audit ๋ช ๋ น์ผ๋ก ๋์จ ๊ฒฐ๊ณผ๋ฅผ ์๋์ผ๋ก ๊ณ ์ณ์ฃผ๋ (high๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋) ๊ฑฐ๋ผ๊ณ ํ๋ค.
$ npm audit fix --force

package.json ํ์ผ ๋ด devDependencied์ prettier๊ฐ ์๋์ผ๋ก ์ค์น๋ ๊ฒ์ ํ์ธํ ์ ์์ ๊ฒ์ด๋ค.
๊ฐ์ฅ ๋ฃจํธ ํด๋์ .prettierrc ํ์ผ์ ์์ฑํ๊ณ , ์ํ๋ Prettier ์ต์ ์ ์๋์์ ์ ํํด ์ฌ์ฉํ๋ฉด ๋๋ค.
{
"arrowParens": "always", // ํ์ดํ ํจ์์ ๋งค๊ฐ๋ณ์๊ฐ ํ๋์ผ ๋ ๊ดํธ๋ฅผ ์ฌ์ฉํ ์ง ์ฌ๋ถ
"bracketSpacing": true, // ๊ฐ์ฒด ๋ฆฌํฐ๋ด์์ ์ค๊ดํธ ๋ด๋ถ์ ๊ณต๋ฐฑ ์ฝ์
ํ ์ง ์ฌ๋ถ
"endOfLine": "auto", // EoF ๋ฐฉ์, OS๋ณ๋ก ์ฒ๋ฆฌ ๋ฐฉ์์ด ๋ค๋ฆ
"htmlWhitespaceSensitivity": "css", // HTML ๊ณต๋ฐฑ ๊ฐ๋ ์ค์
"jsxBracketSameLine": false, // JSX์ ๋ง์ง๋ง `>`๋ฅผ ๋ค์ ์ค๋ก ๋ด๋ฆด์ง ์ฌ๋ถ
"jsxSingleQuote": false, // JSX์ singe ์ฟผํ
์ด์
์ฌ์ฉ ์ฌ๋ถ
"printWidth": 80, // ํ ์ค์ ์ถ๋ ฅ๋๋ ์ฝ๋์ ์ต๋ ๊ธธ์ด
"proseWrap": "preserve", // markdown ํ
์คํธ์ ์ค๋ฐ๊ฟ ๋ฐฉ์ (v1.8.2)
"quoteProps": "as-needed" // ๊ฐ์ฒด ์์ฑ์ ์ฟผํ
์ด์
์ ์ฉ ๋ฐฉ์
"semi": true, // ์ธ๋ฏธ์ฝ๋ก ์ฌ์ฉ ์ฌ๋ถ
"singleQuote": true, // single ์ฟผํ
์ด์
์ฌ์ฉ ์ฌ๋ถ
"tabWidth": 2, // ํญ ๊ฐ๊ฒฉ
"trailingComma": "all", // ์ฌ๋ฌ ์ค์ ์ฌ์ฉํ ๋, ํํ ์ฝค๋ง ์ฌ์ฉ ๋ฐฉ์
"useTabs": false, // ํญ ์ฌ์ฉ ์ฌ๋ถ
"vueIndentScriptAndStyle": true, // Vue ํ์ผ์ script์ style ํ๊ทธ์ ๋ค์ฌ์ฐ๊ธฐ ์ฌ๋ถ (v1.19.0)
"parser": '', // ์ฌ์ฉํ parser๋ฅผ ์ง์ , ์๋์ผ๋ก ์ง์ ๋จ
"filepath": '', // parser๋ฅผ ์ ์ถํ ์ ์๋ ํ์ผ์ ์ง์
"rangeStart": 0, // ํฌ๋งทํ
์ ๋ถ๋ถ ์ ์ฉํ ํ์ผ์ ์์ ๋ผ์ธ ์ง์
"rangeEnd": Infinity, // ํฌ๋งทํ
๋ถ๋ถ ์ ์ฉํ ํ์ผ์ ๋ ๋ผ์ธ ์ง์ ,
"requirePragma": false, // ํ์ผ ์๋จ์ ๋ฏธ๋ฆฌ ์ ์๋ ์ฃผ์์ ์์ฑํ๊ณ Pragma๋ก ํฌ๋งทํ
์ฌ์ฉ ์ฌ๋ถ ์ง์
"insertPragma": false, // ๋ฏธ๋ฆฌ ์ ์๋ @format marker์ ์ฌ์ฉ ์ฌ๋ถ (v1.8.0)
"overrides": [
{
"files": "*.json",
"options": {
"printWidth": 200
}
}
], // ํน์ ํ์ผ๋ณ๋ก ์ต์
์ ๋ค๋ฅด๊ฒ ์ง์ ํจ, ESLint ๋ฐฉ์ ์ฌ์ฉ
}
VSCode์์ ๊ฐ๋ณ๋ก ์ค์ ํ ๊ฐ๋ณด๋ค .prettierrc ํ์ผ์ ์ ์ฉ ์์๊ฐ ๋ ๋๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด ์ค์ ๊ฐ์ ๋ฌด์๋๋ ์ฐธ๊ณ !
'๐ Environment > IDE : ํตํฉ๊ฐ๋ฐํ๊ฒฝ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[IntelliJ] SQL dialect is not configured ๊ฒฝ๊ณ ํด๊ฒฐ (0) | 2025.03.13 |
---|---|
[IntelliJ] ์ธํ ๋ฆฌ์ ์ด ๋ค์ค ํ๋ก์ ํธ ์ด๊ธฐ (์ฌ๋ฌ ํ๋ก์ ํธ ํ ํ๋ฉด์์ ๋ณด๊ธฐ) (0) | 2025.03.12 |
[IntelliJ] ์ธํ ๋ฆฌ์ ์ด ๊ฐ๋ฐ์๊ฐ ์ฐ๊ธฐ ์ข์ ํ๋ฌ๊ทธ์ธ ๋ชฉ๋ก (0) | 2025.03.10 |
[VSCode] Discard changes ๋ณต์ ๋ฐฉ๋ฒ (0) | 2025.02.05 |
[VSCode] Vue.js ๊ฐ๋ฐ์ ์ํ ํ๋ฌ๊ทธ์ธ (0) | 2025.01.31 |