์ด๋ด‰
7 min readApr 30, 2018

Monorepo? Yarn Workspace!

๐ŸŒธ ๋ชจ๋…ธ๋ ˆํฌ. Lerna? Yarn Worksapce!

์„œ๋ก 

๋ชจ๋…ธ๋ ˆํฌ๋ผ๊ณ  ๋“ค์–ด๋ณธ์  ์žˆ๋‹ค๋ฉด ๊ฑฐ์ณ์˜จ ๋‹จ์–ด๋“ค์ด ์žˆ์„๊บผ๋ผ ์ƒ๊ฐ๋œ๋‹ค.

Lerna, Git repo, Git submoduleโ€ฆ

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ž˜ ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋ชจ๋…ธ๋ ˆํฌ๊ฐ€ ๋˜์—ˆ๋‹ค ํ•œ๋“ค ๋ฒˆ์žกํ•˜๋‹ค. ์ด์— ๋Œ€ํ•œ ๋‚ด๊ฐ€ ๋„์ฐฉํ•œ ํ•ด๋ฒ•์— ๋Œ€ํ•ด ๊ธ€์„ ๋‚จ๊ธฐ๊ณ ์ž ํ•œ๋‹ค.

์ฝ”๋“œ ํŒŒํŽธํ™”

์ฝ”๋“œ๋ฅผ ์งœ๋‹ค๋ณด๋ฉด ๋งค ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ๋น„์Šทํ•œ ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ์งœ๊ฒŒ ๋œ๋‹ค. npm์— ๋ฐฐํฌํ•˜๊ธด ๋ญํ•˜๊ณ , ๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ• ๋•Œ ๋‹ค์‹œ ์งœ์„œ ์กฐ๊ธˆ ๊ฐœ์„ ๋˜๊ฑฐ๋‚˜ ์•„๋‹˜ ์ด์ „์˜ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์™€์„œ ํŒŒํŽธํ™”๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฝค ์žˆ์—ˆ๋‹ค.

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

๋ชจ๋…ธ๋ ˆํฌ

๋‚ด๊ฐ€ ์•„๋Š”(์‚ฝ์„ ๋– ๋ณธ) ๋ชจ๋…ธ๋ ˆํฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” 3๊ฐ€์ง€ ์ •๋„๊ฐ€ ์žˆ์—ˆ๋‹ค.

Lerna

๋Ÿฌ๋‚˜๋Š” ๋ชจ๋…ธ๋ ˆํฌ์™€ ํ•จ๊ป˜ ๊ฐ ํŒจํ‚ค์ง€๋ฅผ ๋ฐฐํฌํ•˜๋Š” ์˜์—ญ๊นŒ์ง€๋ฅผ ์ปค๋ฒ„ํ•œ๋‹ค. ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ ˆํฌ๊ฐ€ ํ•จ๊ป˜ ์—ฎ์—ฌ์„œ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ณ  ํ•˜๋‚˜์˜ ๋ฒ„์ „์œผ๋กœ ๊ฐˆ ๊ฒƒ์ธ์ง€, ํŒจํ‚ค์ง€๋งˆ๋‹ค ๋‹ค๋ฅธ ๋ฒ„์ €๋‹์„ ๊ฐ–๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€.

์˜ค๋ž˜๋˜์„œ ๊ธฐ์–ต์€ ์ž˜ ๋‚˜์ง€ ์•Š์ง€๋งŒ ๋ญ”๊ฐ€ ๊ณ„์†์ ์œผ๋กœ npm install ์„ ํ•ด์•ผํ•˜๋Š” ๋“ฑ ๋Œ€๋‹จํžˆ ์งœ์ฆ๋‚˜๋Š” ์ผ์ด ๋งŽ์•˜๋˜ ๊ฒƒ์œผ๋กœ ๊ธฐ์–ต๋‚œ๋‹ค.

๋Ÿฌ๋‚˜๋Š” Yarn workspace ์„ค๋ช…์—๋„ ๋‚˜์™€์žˆ๋“ฏ์ด ํ•จ๊ป˜ ์“ธ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐฐํฌ ๋ ˆ๋ฒจ์—์„œ ์ฝœ๋ผ๋ณด๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐฐํฌ๋Š” ๋˜ ๋‹ค๋ฅธ ์ฃผ์ œ์ด๋ฏ€๋กœ ์ด ๊ธ€์—์„œ๋Š” ์ œ์™ธ๋œ๋‹ค.

Git-repo

๊ตฌ๊ธ€์—์„œ ๊ด€๋ฆฌํ•˜๋Š” CLI ํˆด, ์ง€์ธ์„ ํ†ตํ•ด ๋“ค์—ˆ๋Š”๋ฐ ์จ๋ณด์ง„ ์•Š๋‹ค. ์ปจ์…‰ ์ž์ฒด๋Š” ์—ฌ๋Ÿฌ ๋ ˆํฌ๋ฅผ ํ•œ๋ฒˆ์— ๋•ก๊ธฐ๊ณ  ํ‘ธ์‹œ ํ’€ํ•˜๋Š” ๋“ฑ, ํ•˜๋‚˜์˜ ๋ ˆํฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ์ปจ์…‰์œผ๋กœ ์ดํ•ดํ–ˆ๋‹ค. ์–ด์ฐŒ๋ณด๋ฉด ์ง„์ •ํ•œ ์˜๋ฏธ์˜ ๋ชจ๋…ธ๋ ˆํฌ์ผ์ง„ ๋ชจ๋ฅด๊ฒ ์œผ๋‚˜ ๋„ˆ๋ฌด ๋ชจ๋…ธ๋ ˆํฌ๋‹ค(?).

Git Submodule

๊นƒ์˜ ์ปค๋งจ๋“œ์œ submodule์„ ํ†ตํ•ด ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ์˜ ์œ„์น˜๋ฅผ ํŠน์ • ๋ ˆํฌ๋กœ ๋งคํ•‘ํ•œ๋‹ค. ์‹œ์ž‘์‹œ์— git submodule init ๋“ฑ์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด submodule ์„ ํด๋ก ํ•˜๊ฒŒ ๋œ๋‹ค.

IDE ๊ฐ€ ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•œ ํŒŒ์ผ์€ ๋‹ค๋ฅธ ๋ ˆํฌ๋ผ๋Š” ๊ฒƒ์„ ์ธ์‹ํ•ด์ค˜์•ผํ•œ๋‹ค. ๊ทธ๋Ÿผ ๋ฉ”์ธ ๋ ˆํฌ์™€ submodule ์˜ ๋ ˆํฌ์— ์žˆ๋Š” ํŒŒ์ผ์ด ๋™์‹œ์— ์ˆ˜์ •์ด ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž ์šฐ๋ฆฌ๋Š” ์ปค๋ฐ‹์„ ํ• ํ…Œ๋ฐ ์ˆœ์„œ๋Š” ์ด๋ ‡๊ฒŒ ์ง„ํ–‰ ๋˜์–ด์•ผํ•œ๋‹ค.

  • ์„œ๋ธŒ ๋ชจ๋“ˆ์— ์ปค๋ฐ‹์„ ํ•œ๋‹ค
  • ์„œ๋ธŒ ๋ชจ๋“ˆ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ปค๋ฐ‹ ID๊ฐ€ ๋ฐ”๋€๋‹ค.
  • ๋ฐ”๋€ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ปค๋ฐ‹ ID๋ฅผ ๋ฉ”์ธ ๋ ˆํฌ์—์„œ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ˆ˜์ •๋œ ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ์ปค๋ฐ‹ํ•œ๋‹ค.

์ด๋Ÿฐ ์ƒํƒœ๊ฐ€ ๋˜์–ด์•ผํ•˜๋Š”๋ฐ ์ด๊ฒŒ ์ž˜ ์•ˆ๋˜์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋•Œ ์ •๋ฆฌํ–ˆ๋˜ ๊ธ€์„ ์ฐพ์•„๋ดค๋‹ค.

2016๋…„ 4์›” 12์ผ ์ธ๊ฑธ ๋ณด๋‹ˆ ํšŒ์‚ฌ๋ฅผ ๊ทธ๋งŒ๋‘๊ณ  8๊ฐœ์›”๋™์•ˆ ์ž ๋งŒ์ž๋‹ค ์ผ์–ด๋‚˜์„œ ์žฌ์ทจ์—…์„ ํ–ˆ๋˜ ๊ทธ ๋•Œ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ๊นƒ์„ ์ฒ˜์Œ ์‹ค๋ฌด์—์„œ ์จ๋ณด๋˜ ๋•Œ์ธ๋ฐ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋ ˆํฌ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด์„œ ๊ณ ๋ฏผํ–ˆ์—ˆ๋‚˜ ๋ณด๋‹ค.

์—ฌํŠผ ๋‹น์‹œ ๊ธฐ์–ต์œผ๋กœ๋Š” IDE์—์„œ ์ง€์›์ด ๋ญ”๊ฐ€ ์™„๋ฒฝํ•˜์ง€ ์•Š์•˜๊ณ  ํ„ฐ๋ฏธ๋„์„ ํ†ตํ•ด์„œ ์ž‘์—…์„ ํ•ด์•ผํ–ˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ• ๋•Œ git submodule init ์„ ์žŠ์–ด์„œ ์™œ ์•ˆ๋˜๋Š”์ง€ ์ฐพ์•˜๋˜ ์ ๋„ ์žˆ๋‹ค.

๐ŸŒธ Yarn Workspace

์•„๋งˆ๋„ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋น„์Šทํ•œ ๊ณ ๋ฏผ์„ ๊ฐ™์ด ํ–ˆ์„ํ…Œ๋ฐ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ํŒจํ‚ค์ € ๋งค๋‹ˆ์ € ๋ ˆ๋ฒจ์—์„œ ์ง€์›๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. Yarn Workspace๋‹ค.

Yarn

Yarn์€ ๋…ธ๋“œ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์ธ npm์„ ๋ณด์™„(?) ํ•ด์„œ ํŽ˜์ด์Šค๋ถ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋‹ค. ์ง€๋‚œ ์ •๋ฆฌ ๊ธ€์„ ์ฐพ์•„๋ณด๋‹ˆ 2016๋…„์— ๋‚˜์˜จ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

1.0๋•Œ์— ์ฒ˜์Œ workspace ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€ ๋˜์—ˆ๋‹ค(๊ธ€์„ ์“ฐ๊ณ  ์žˆ๋Š” ์‹œ์ ์€ 1.6) .

Workspace

๋ชจ๋…ธ๋ ˆํฌ์˜ ๊ฐ ํŒจํ‚ค์ง€๋งˆ๋‹ค ๊ฐ€์ง€๊ณ  ์žˆ๋Š” node_module ๊ฐ€ ๋ฃจํŠธ์˜ node_modules ๋ฅผ ์ฐธ์กฐํ•˜๋„๋ก ๋˜์žˆ์œผ๋ฆฌ๋ผ. ๋‚ด๋ถ€ ๊ตฌํ˜„์˜ ์ดํ•ด๊ฐ€ ๋ชฉ์ ์ด ์•„๋‹Œ๋งŒํผ ์‚ฌ์šฉ๋ฒ•์— ์ดˆ์ฒจ์„ ๋งž์ถ”๊ณ  ๊ธ€์„ ์จ๋‚ด๋ ค๊ฐ€๊ฒ ๋‹ค.

์‚ฌ์šฉ๋ฒ•

Init

์ฒ˜์Œ๋ถ€ํ„ฐ ์„ค๋ช…์„ ํ•œ๋‹ค๋Š” ๊ฐ€์ •์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ private: true ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผํ•œ๋‹ค.

yarn init

๊ทธ๋ฆฌ๊ณ  workspace ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค.

Workspace

package.json ์„ ์—ด๊ณ  workspace ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•œํ›„์— ์–ด๋ ˆ๋กœ ํŒจํ„ด์„ ์ถ”๊ฐ€ํ•œ๋‹ค. glob ํŒจํ„ด(ํ™•์ธํ•ด๋ณด์ง„ ์•Š์Œ) ์„ ์ง€์›ํ•˜๋‹ˆ ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”๊ฐ€๋ฅผ ํ•˜์ž ํŒจํ‚ค์ง€๋“ค์ด ๋“ค์–ด๊ฐˆ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์€ packages ๋กœ ๊ฐ€์ •ํ–ˆ๋‹ค.

define workspaces

workspace ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ๋˜์—ˆ๋‹ค.

ํŒจํ‚ค์ง€ ์ƒ์„ฑ

packages ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ‘์— ํŒจํ‚ค์ง€์˜ ์ด๋ฆ„์„ ์ƒ์„ฑํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ package.json ์„ ์ƒ์„ฑํ•˜์ž. ์ด ํŒจํ‚ค์ง€๋Š” private ์ด ํ•„์š”์—†๋Š” ์ผ๋ฐ˜์ ์ธ ํŒจํ‚ค์ง€๋‹ค.

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ

์ƒ์„ฑ์„ ํ•œ ํ›„์—๋Š” ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋“ค์–ด๊ฐˆ ํ•„์š”์—†์ด ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

workspace ๋ ˆ๋ฒจ์—์„œ sub package๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

์ด๋Ÿฐ์‹์œผ๋กœ yarn์˜ ์ปค๋งจ๋“œ ์ดํ›„์— workspace [ํŒจํ‚ค์ง€๋ช…] ์„ ๋ถ™์ด๊ณ  ์ž‘์—…์„ ํ•˜๋ฉด๋œ๋‹ค. ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ๊ณตํ†ต์ ์œผ๋กœ ์ ์šฉ์„ ํ•ด๋„ ๋ฐฐํฌ์™€ ์ด์Šˆ๊ฐ€ ๋ถ„๋ฆฌ๋œ๋‹ค๋ผ๊ณ  ํ•˜๋ฉด workspace ์ž์ฒด์— ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด typescript ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค. typescript๋กœ ์ž‘์„ฑ๋œ ๋ชจ๋“ˆ์˜ ๊ฒฝ์šฐ์—๋Š” ์ปดํŒŒ์ผ ์ดํ›„ js๋กœ ๋ฐฐํฌ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” -W ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์˜ package.json ์„ ํ†ตํ•ด ๊ด€๋ฆฌ๋œ๋‹ค.

-W ์˜ต์…˜์€ workspace ๋ ˆ๋ฒจ์—์„œ์˜ ์ข…์†์„ฑ ๊ด€๋ฆฌ ์„ ์–ธ์„ ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฃจํŠธ package.json ์— dependency ๊ฐ€ ๊ธฐ๋ก๋˜๊ณ  ๊ด€๋ฆฌ๋œ๋‹ค.

ํŒจํ‚ค์ง€ ์ฐธ์กฐ

๊ทธ๋Ÿผ ์ด์ œ ์ƒํ˜ธ ํŒจํ‚ค์ง€๋Š” ์–ด๋–ป๊ฒŒ ์ฐธ์กฐํ•˜๋Š๋ƒ ์ •๋„์˜ ๋ฌธ์ œ๊ฐ€ ๋‚จ์•˜๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ๋‹จ์ˆœํ•˜๋ฉฐ ์ด ์ž‘์—…์— ๋Œ€ํ•ด yarn ์ปค๋งจ๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์ฐพ์•„๋ณด์ง€ ์•Š์•„์„œ ๋ชจ๋ฅด๊ฒ ๋‹ค.

์žˆ๋‹ค๋ฉด ํ”ผ๋“œ๋ฐฑ์„ ๋ถ€ํƒ๋“œ๋ฆฐ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ์žˆ๋‹ค. readme ํŒจํ‚ค์ง€์—์„œ speech ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ผ๊ณ  ํ•œ๋‹ค๋ฉด readme/package.json ํŒŒ์ผ์„ ์—ด๊ณ  ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

speech๋Š” packages/speech ์•„๋ž˜ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด์•ผํ•œ๋‹ค.

์ฃผ์˜ํ•  ์ ์€ ์˜์กด์„ฑ ์ถ”๊ฐ€์‹œ ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฆ„์ด package.json์— ์‚ฌ์šฉ๋œ ํŒจํ‚ค์ง€์˜ name ๊ณผ ๊ฐ™์•„์•ผ๋งŒ ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฃจํŠธ์—์„œ ๋‹ค์‹œ yarn ์„ ํ†ตํ•ด ์ธ์Šคํ†จ์„ ๋‹ค์‹œํ•˜๋ฉด node_modules ๋ฅผ ์ œ๋Œ€๋กœ ์ฐธ์กฐํ•˜๊ฒŒ ๋œ๋‹ค.

๊ธ€์„ ์œ„ํ•ด ์ƒ˜ํ”Œ ๋ ˆํฌ๋ฅผ ๋งŒ๋“ค์ง„ ์•Š์•˜์œผ๋‹ˆ ์ตœ๊ทผ ์ง„ํ–‰ํ•œ ํŽซ ํ”„๋กœ์ ํŠธ์—์„œ ์ดˆ๊ธฐ์— ๊ตฌ์กฐ๋ฅผ ์žก์•˜๋˜ ์ปค๋ฐ‹ ์•„์ด๋””๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋Š” ๋Œ€์ถฉ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

https://github.com/deptno/readme

๋งˆ๋ฌด๋ฆฌ

TypeScript ๊นŒ์ง€์˜ ์—ฐ๊ณ„๋ฅผ ์„ค๋ช…ํ•˜๋ ค ํ•˜์˜€์œผ๋‚˜ ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ–ˆ๊ณ  ์ƒ๊ฐ๋ณด๋‹ค ์‹œ๊ฐ„์ด ์†Œ๋ชจ๋˜์–ด ์—ฌ๊ธฐ์„œ ๋งˆ๋ฌด๋ฆฌํ•œ๋‹ค. ๊ฐ™์€ ๊ณ ๋ฏผ์„ ํ•˜๋Š” ๋‹ค๋ฅธ ๋ถ„๋“ค๋„ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๐Ÿ‘ ๋ถ€ํƒ๋“œ๋ฆฐ๋‹ค.