๐Ÿ‘จโ€๐Ÿ’ป

VSCode์—์„œ ์ปค์Šคํ…€ ์Šค๋‹ˆํŽซ(์ฝ”๋“œ์กฐ๊ฐ) ๋“ฑ๋กํ•˜์—ฌ ํšจ์œจ์„ฑ ์กฐ๊ธˆ ๋†’์ด๊ธฐ

2023-06-26 ย  | ย  ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ

post-img

๋ฐ˜๋ณต์€ ๊ท€์ฐฌ์•„!

VSCode์—์„œ ์ฝ”๋“œ ์ž‘์—…์„ ํ•˜๋‹ค๋ณด๋ฉด ํŒŒ์ผ๋งˆ๋‹ค ๋ฐ˜๋ณต์ ์ธ ๋ชจ๋“ˆ์„ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜, ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ ๋ฐ˜๋ณต์ ์ธ ํ•จ์ˆ˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ์‹œ์ž‘ํ•˜๊ณค ํ•œ๋‹ค. ๋งˆํฌ๋‹ค์šด ํ˜•์‹์œผ๋กœ ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์ž‘์„ฑํ•  ๋•Œ์—๋„ Frontmatter์™€ ๊ฐ™์€ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด์„œ ์‹œ์ž‘ํ•œ๋‹ค. ์ด๋Ÿฐ ๋ฐ˜๋ณต์€ ์—ฌ๊ฐ„ ๊ท€์ฐฎ์€๊ฒŒ ์•„๋‹ˆ๋‹ค. ๊ท€์ฐฎ์œผ๋ฉด ๋‹จ์ˆœํ™” ์‹œ์ผœ์•ผ ํ•œ๋‹ค. ๋ฐ˜๋ณต์ ์ธ๊ฑธ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ์ด๊ฒŒ ์šฐ๋ฆฌ์˜ ์ˆ™๋ช… ์•„๋‹Œ๊ฐ€?

VSCode์˜ Code Snippets Custom Configure (์ฝ”๋“œ ์กฐ๊ฐ ์ปค์Šคํ…€)

Snippet ์€ ์ผ๋ฐ˜ ๋ช…์‚ฌ๋กœ ์ž‘์€ ์ •๋ณด๋‚˜ ์กฐ๊ฐ์„ ๋œปํ•œ๋‹ค. ์ฝ”๋“œ ์ž‘์—…์—์„œ๋Š” ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์„ ๋‹จ์ˆœํ™” ์‹œ์ผœ๋ฒ„๋ฆฌ๋Š” ์ผ ์ž์ฒด๋ฅผ ์˜๋ฏธํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ VSCode์—๋Š” (์ด๋ฏธ ๋งŽ์€ VSCode ์‚ฌ์šฉ์ž๋“ค์ด ์• ์šฉํ•˜๋Š”) ์ปค์Šคํ…€ ์ฝ”๋“œ ์กฐ๊ฐ ๋“ฑ๋ก ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. ๋ฌผ๋ก , VSCode์— ๋‚ด์žฅ๋œ ๋งŽ์€ ์ฝ”๋“œ ์กฐ๊ฐ๋“ค์ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด์žฅ๋œ ์ฝ”๋“œ ์กฐ๊ฐ์€ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ ๋‹ค์Œ ๋‹ค์‹œ ๋‚ด ์ž…์— ๋งž๊ฒŒ ์ˆ˜์ •์„ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‚ด๊ฐ€ ์ฃผ๋กœ ๋ฐ˜๋ณตํ•ด์„œ ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋“œ๋“ค์„ ์ž‘์€ โ€˜๋ช…๋ น์–ดโ€™ ํ˜•ํƒœ์˜ ์กฐ๊ฐ์œผ๋กœ ๋“ฑ๋กํ•ด์„œ ๋น ๋ฅด๊ฒŒ ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ๊ฒŒ ์„ธํŒ…ํ–ˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋‚ด๊ฐ€ ๋“ฑ๋กํ•ด๋‘” frontmatter๊ฐ€ ์žˆ๋Š” ๋งˆํฌ๋‹ค์šด ๋ฌธ์„œ๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ ์กฐ๊ฐ๊ณผ props์˜ ํƒ€์ž…์„ ์ •์˜ํ•œ ๋ฆฌ์•กํŠธ array functional component์˜ ์ฝ”๋“œ ์กฐ๊ฐ์„ ์†Œ๊ฐœํ•˜๋ฉด์„œ, VSCode์—์„œ ์ปค์Šคํ…€ ์ฝ”๋“œ ์กฐ๊ฐ์„ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ธฐ๋ก์„ ๋‚จ๊ธด๋‹ค.

๊ธฐ๋ณธ ์ ˆ์ฐจ

์ฝ”๋“œ ์กฐ๊ฐ 1

shift + cmd + p๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์ž.

์ฝ”๋“œ ์กฐ๊ฐ 2

์‚ฌ์šฉ์ž ์ฝ”๋“œ ์กฐ๊ฐ ๊ตฌ์„ฑ์„ ์„ ํƒํ•˜์—ฌ ์›ํ•˜๋Š” ์–ธ์–ด์™€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ ํƒํ•˜์ž.

  • 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์„ ์ž‘์„ฑํ•˜๋Š” ํŽธ์ด๋‹ค.

์ฝ”๋“œ ์กฐ๊ฐ 3

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์˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ๋•Œ๊ฐ€ ๊ฐ„ํ˜น ์žˆ์–ด์„œ ์ฝ”๋“œ ์ƒ์„ฑ ํ›„ ์ˆ˜์ •๋  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ์œ„์น˜์— ์ปค์„œ๋ฅผ ๋†“์•˜๋‹ค.

์ฝ”๋“œ ์กฐ๊ฐ 4

์ปค์„œ ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ์ปค์„œ๊ฐ€ ๊นœ๋นก์ธ๋‹ค.

์˜ค๋Š˜ ์†Œ๊ฐœํ•œ ์ปค์Šคํ…€ ์ฝ”๋“œ ์กฐ๊ฐ ๋“ฑ๋ก์€ ์—„์ฒญ๋‚œ ํŒ์€ ์•„๋‹ˆ์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ์น  ๋•Œ ์ž‘๊ฒŒ๋‚˜๋งˆ ํšจ์œจ์„ฑ์„ ํ™•์‹คํžˆ ๋†’์—ฌ์ค€๋‹ค. ์•„์ง ์‚ฌ์šฉํ•ด๋ณด์ง€ ์•Š์•˜๋‹ค๋ฉด ๊ผญ ์‚ฌ์šฉํ•ด๋ณด์‹œ๋ผ!

๋ชฉ์ฐจ

์ด์–ด์ง€๋Š” ๊ธ€,