๋ฐ๋ณต์ ๊ท์ฐฌ์!
VSCode์์ ์ฝ๋ ์์
์ ํ๋ค๋ณด๋ฉด ํ์ผ๋ง๋ค ๋ฐ๋ณต์ ์ธ ๋ชจ๋์ ํธ์ถํ๊ฑฐ๋, ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ๋ ๋ฐ๋ณต์ ์ธ ํจ์ ์ฝ๋๋ฅผ ์์ฑํ๋ฉฐ ์์ํ๊ณค ํ๋ค. ๋งํฌ๋ค์ด ํ์์ผ๋ก ๋ธ๋ก๊ทธ ๊ธ์ ์์ฑํ ๋์๋ Frontmatter
์ ๊ฐ์ ์์๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์์ฑํ๋ฉด์ ์์ํ๋ค. ์ด๋ฐ ๋ฐ๋ณต์ ์ฌ๊ฐ ๊ท์ฐฎ์๊ฒ ์๋๋ค. ๊ท์ฐฎ์ผ๋ฉด ๋จ์ํ ์์ผ์ผ ํ๋ค. ๋ฐ๋ณต์ ์ธ๊ฑธ ๋ฐ๋ณตํ์ง ์๊ฒ ๋ง๋ค์ด์ผ ํ๋ค. ์ด๊ฒ ์ฐ๋ฆฌ์ ์๋ช
์๋๊ฐ?
VSCode์ Code Snippets Custom Configure (์ฝ๋ ์กฐ๊ฐ ์ปค์คํ )
Snippet ์ ์ผ๋ฐ ๋ช ์ฌ๋ก ์์ ์ ๋ณด๋ ์กฐ๊ฐ์ ๋ปํ๋ค. ์ฝ๋ ์์ ์์๋ ์์ ์กฐ๊ฐ์ผ๋ก ๋ฐ๋ณต์ ์ธ ์์ ์ ๋จ์ํ ์์ผ๋ฒ๋ฆฌ๋ ์ผ ์์ฒด๋ฅผ ์๋ฏธํ๊ธฐ๋ ํ๋ค.
๋คํ์ค๋ฝ๊ฒ๋ VSCode์๋ (์ด๋ฏธ ๋ง์ VSCode ์ฌ์ฉ์๋ค์ด ์ ์ฉํ๋) ์ปค์คํ ์ฝ๋ ์กฐ๊ฐ ๋ฑ๋ก ๊ธฐ๋ฅ์ด ์๋ค. ๋ฌผ๋ก , VSCode์ ๋ด์ฅ๋ ๋ง์ ์ฝ๋ ์กฐ๊ฐ๋ค์ด ์๋ค. ํ์ง๋ง ๋ด์ฅ๋ ์ฝ๋ ์กฐ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํ ๋ค์ ๋ค์ ๋ด ์ ์ ๋ง๊ฒ ์์ ์ ํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค. ๊ทธ๋์ ๋๋ ๋ด๊ฐ ์ฃผ๋ก ๋ฐ๋ณตํด์ ์์ฑํ๋ ์ฝ๋๋ค์ ์์ โ๋ช ๋ น์ดโ ํํ์ ์กฐ๊ฐ์ผ๋ก ๋ฑ๋กํด์ ๋น ๋ฅด๊ฒ ํธ์ถ๋ ์ ์๊ฒ ์ธํ ํ๋ค.
์ด๋ฒ ๊ธ์์๋ ๋ด๊ฐ ๋ฑ๋กํด๋ frontmatter๊ฐ ์๋ ๋งํฌ๋ค์ด ๋ฌธ์๋ฅผ ์ํ ์ฝ๋ ์กฐ๊ฐ๊ณผ props์ ํ์ ์ ์ ์ํ ๋ฆฌ์กํธ array functional component์ ์ฝ๋ ์กฐ๊ฐ์ ์๊ฐํ๋ฉด์, VSCode์์ ์ปค์คํ ์ฝ๋ ์กฐ๊ฐ์ ๋ฑ๋กํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ธฐ๋ก์ ๋จ๊ธด๋ค.
๊ธฐ๋ณธ ์ ์ฐจ
shift + cmd + p๋ฅผ ์ ๋ ฅํด์ฃผ์.
์ฌ์ฉ์ ์ฝ๋ ์กฐ๊ฐ ๊ตฌ์ฑ์ ์ ํํ์ฌ ์ํ๋ ์ธ์ด์ ํ๋ ์์ํฌ๋ฅผ ์ ํํ์.
- VSCode์์
Shift + CMD + P
ํค๋ฅผ ๋๋ฌ ์ค์ ๋ฑ๋ก ๋ชฉ๋ก์ ์ด์ด์ค๋ค. ์์ ๊ฐ์ ์ด๋ฏธ์ง์ ์ ๋ ฅ์ฐฝ์ด ์ด๋ฆด๊ฑด๋ฐ, โ์ฝ๋โ๋ผ๊ณ ์์ฑ์ ํ์ฌ โ์ฝ๋ ์กฐ๊ฐ: ์ฌ์ฉ์ ์ฝ๋ ์กฐ๊ฐ ๊ตฌ์ฑโ์ ์ ํํ๋ค. (Snippets: Configure User Snipppets) - ์ด๋ค ์ธ์ด์ ์ด๋ค ํ๋ ์์ํฌ ํ์ผ์์ ์ฝ๋ ์กฐ๊ฐ์ ์ปค์คํ ํ ๊ฒ์ธ์ง ์ ํํ๋ฉด ๋๋ค. ๋ ๊ฐ์ ๊ฒฝ์ฐ์๋ markdown.json๊ณผ typescriptreact.json์ ๊ฐ๊ฐ ์ ํํ์ฌ ๋ฑ๋กํ๋ค.
Frontmatter๊ฐ ์๋ ๋งํฌ๋ค์ด ๋ฌธ์๋ฅผ ์ํ ์ฝ๋ ์กฐ๊ฐ
markdown.json์ ์ฃผ์์ผ๋ก ์ค๋ช ๋ ๋ถ๋ถ๋ง ๋ณด๋๋ผ๋ ์ฝ๊ฒ ์ปค์คํ ์ฝ๋ ์กฐ๊ฐ์ ๋ฑ๋กํ ์ ์์ ๊ฒ์ด๋ค. ์ฝ๋ ์กฐ๊ฐ์ ๋ฑ๋กํ๊ธฐ ์ํด์๋ json ํ์์ผ๋ก โprefixโ, โbodyโ์ ํด๋นํ๋ ๋ด์ฉ๋ง ์ ์ฑ์์ฃผ๋ฉด ๋๋ค.
- "prefix" : ์ฝ๋ ์กฐ๊ฐ ๊ทธ ์์ฒด. VSCode์์ ์กฐ๊ฐ์ฒ๋ผ ์ ๋ ฅํด์ ๋ฐ๋ณต์ ์ธ ์ฝ๋๋ฅผ ๋ถ๋ฌ๋ด๋ key words๋ฅผ ๋ฑ๋กํ๋ค.
- "body" : prefix์ ๋ฑ๋ก๋ ์ฝ๋ ์กฐ๊ฐ์ด ๋ถ๋ฌ๋ด๋ ๋ฐ๋ณต์ ์ธ ์ฝ๋ ๊ทธ ์์ฒด๋ฅผ ๋ฑ๋กํ๋ค.
โdescriptionโ์ด๋ผ๋ ํค์๋ ํน์ ๊ฐ์ ๋ฑ๋กํ ์ ์๋๋ฐ, ๋ง ๊ทธ๋๋ก ๋ด๊ฐ ๋ฑ๋กํ๋ ์ฝ๋ ์กฐ๊ฐ์ด ์ด๋ค ์ญํ ์ ํ๋ ์กฐ๊ฐ์ธ์ง์ ๋ํ ์ค๋ช ์ ์ ๋ ฅํ ์ ์๋ค. ๊ทธ๋ฐ๋ฐ, ๋ณดํต ๋ด๊ฐ ์ง์ ๋ฑ๋กํ ์ฝ๋ ์กฐ๊ฐ๋ณ๋ก ์ด๋ค ์ฝ๋๋ฅผ ๋ถ๋ฌ๋ด๋์ง ์์ด ์ธ์ฐ๊ณ ์์ด์ ์ค๋ช ์ ์ ๋ณด์ง๋ ์๋๋ค. ๊ทธ๋๋ ์๋ ์์ฑ์์ ๋ฑ๋กํ ์ค๋ช ์ ์ฝ์ด๋ณด๋ฉด์ ์ ์คํ๊ฒ ์ ํํ ์ ์๊ฒ ๋์์ฃผ๋ ์์๋ก description์ ์์ฑํ๋ ํธ์ด๋ค.
description์ ๋ฑ๋กํ๋ฉด ์ ์ด๋ฏธ์ง์ฒ๋ผ ์ค๋ช ์ด ๋ ธ์ถ๋๋ค.
๋๋ ๋ธ๋ก๊ทธ ์์ฑ์ ์ํด ์๋์ ๊ฐ์ ๋งํฌ๋ค์ด ์ฝ๋ ์กฐ๊ฐ์ ๋ฑ๋กํด์ ์ฌ์ฉํ๋ค. ์ปค์คํ
์ฝ๋ ์กฐ๊ฐ์ ๋ฑ๋กํ ๋๋ ๋ช ๊ฐ์ง ๋ณ์๋ฅผ ํ์ฉํ ์๋ ์๋ค. ${๋ณ์}
ํํ๋ก ์ฌ์ฉํ๋ค. ๋๋ ๊ธ ์์ฑ์ผ์ ๋ฌธ์ ์์ฑ์ผ๋ก ๋ฑ๋กํ๊ธฐ ์ํด์ ${CURRENT_YEAR}
์ ๊ฐ์ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ค.
"Set Blog Template - Book": {
"prefix": "bbm",
"body": [
"---",
"emoji: ๐",
"title: ",
"createdAt: '${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE}'",
"categories: '์ฑ
'",
"tags: '์ฑ
'",
"---",
"\n",
"<p style='display: block; margin: 0 0 16px 0' />",
"\n"
],
"description": "bbm - ์ฑ
๊ณผ ๊ด๋ จ๋ ๋ธ๋ก๊ทธ๋ฅผ ์์ฑํ ๋ ์ฌ์ฉ!"
}
- CURRENT_YEAR : ํ์ฌ ์ฐ๋
- CURRENT_MONTH : ํ์ฌ ์ (06์ ๊ฐ์ด ๋ ์๋ฆฌ ์ซ์๋ก ๊ตฌ์ฑ)
- CURRENT_DATE : ํ์ฌ ์ผ (07์ ๊ฐ์ด ๋ ์๋ฆฌ ์ซ์๋ก ๊ตฌ์ฑ)
props์ ํ์ ์ด Index Signature ๋ฐฉ์์ผ๋ก ์ง์ ๋ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ ์ฝ๋ ์กฐ๊ฐ
๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ฅผ ์ํ ์ฝ๋ ์กฐ๊ฐ๋ ๋งํฌ๋ค์ด ์ฝ๋ ์กฐ๊ฐ์ ์์ฑํ๋ ๋ฐฉ์๋๋ก ํ๋ฉด๋๋ค. ๋ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ปดํฌ๋ํธ๋ช ๊ณผ ํ์ผ๋ช ์ ๋์ผํ๊ฒ ์์ฑํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ ํ์ผ๋ช ์ ๋ฐ์์ฌ ์ ์๋ ๋ณ์๋ฅผ ํ์ฉํ๋ค.
"tsx - array functional component with props type": {
"prefix": "fcwt",
"body": [
"import React from 'react'",
"\n",
"type ${TM_FILENAME_BASE}${1:}Props = { ",
" [key: string]: any",
"}",
"\n",
"const ${TM_FILENAME_BASE}${1:} = ({}:${TM_FILENAME_BASE}${1:}Props) => {",
"\n",
" return (",
" <div>",
" <div></div>",
" </div>",
" )",
"}",
"\n",
"export default ${TM_FILENAME_BASE}${1:}"
],
"description": "๋ฆฌ์กํธ ํ์ดํ ํจ์ ์ปดํฌ๋ํธ w.Props Types"
}
- TM_FILENAME_BASE : ํ์ฅ์๋ฅผ ๋ ๋ฌธ์์ ํ์ผ ์ด๋ฆ์ ๊ฐ์ ธ์จ๋ค.
- 1: : ์ฝ๋ ์กฐ๊ฐ์ ์์ฑํ์ ๋, ์ปค์ ์์น๋ฅผ ๋ฑ๋กํ ์ ์๋ค. ์ปดํฌ๋ํธ ์ด๋ฆ๊ณผ Props Type์ ์ด๋ฆ์ ๋ฐ๊ฟ ๋๊ฐ ๊ฐํน ์์ด์ ์ฝ๋ ์์ฑ ํ ์์ ๋ ์ ์๋ ์ฝ๋ ์์น์ ์ปค์๋ฅผ ๋์๋ค.
์ปค์ ๋ณ์๋ฅผ ํ์ฉํ๋ฉด ์ด๋ ๊ฒ ์ปค์๊ฐ ๊น๋นก์ธ๋ค.
์ค๋ ์๊ฐํ ์ปค์คํ ์ฝ๋ ์กฐ๊ฐ ๋ฑ๋ก์ ์์ฒญ๋ ํ์ ์๋์ง๋ง ์ฝ๋๋ฅผ ์น ๋ ์๊ฒ๋๋ง ํจ์จ์ฑ์ ํ์คํ ๋์ฌ์ค๋ค. ์์ง ์ฌ์ฉํด๋ณด์ง ์์๋ค๋ฉด ๊ผญ ์ฌ์ฉํด๋ณด์๋ผ!