Hello Kitty Eyes Shut
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป ํ”„๋กœ์ ํŠธ/๐Ÿ“Œ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

[ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…] NPM์—์„œ PNPM์œผ๋กœ

๋ฐ˜์‘ํ˜•

๐Ÿงฉ ๋ฌธ์ œ ์ƒํ™ฉ

ํ”„๋กœ์ ํŠธ๋ฅผ ์ดˆ๊ธฐ์—๋Š” ๊ฐ€์žฅ ๋ณดํŽธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” npm์„ ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋กœ ๊ตฌ์„ฑํ–ˆ์—ˆ๋‹ค.

๋˜ํ•œ, TypeScript, TailwindCSS, React Query ๋“ฑ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ฐœ๋ฐœ์„ ์ด์–ด๊ฐ”๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ ๊ธฐ๋Šฅ์ด ์ ์ฐจ ํ™•์žฅ๋˜๊ณ  ์˜์กด์„ฑ์ด ๋งŽ์•„์งˆ์ˆ˜๋ก, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์ œ์— ๋ฐ˜๋ณต์ ์œผ๋กœ ์ง๋ฉดํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

๐Ÿ‘พ npm install ์‹คํ–‰ ์‹œ, 20์ดˆ ์ด์ƒ ์†Œ์š”๋˜๋Š” ๋А๋ฆฐ ์„ค์น˜ ์†๋„

๐Ÿ‘พ node_modules ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ง€์†์ ์ธ ์šฉ๋Ÿ‰ ์ฆ๊ฐ€

๐Ÿ‘พ ์˜์กด์„ฑ ๊ฐ„ ์ถฉ๋Œ๋กœ ์ธํ•œ npm install ์‹คํŒจ ๋ฐ Cannot find module ์˜ค๋ฅ˜ ๋ฐœ์ƒ

๐Ÿ‘พ CI ํ™˜๊ฒฝ์—์„œ์˜ ๋นŒ๋“œ ์‹œ๊ฐ„ ์ฆ๊ฐ€ ๋ฐ ๋ถˆ์•ˆ์ •ํ•œ ์บ์‹œ ์ฒ˜๋ฆฌ

 

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์€ ๋‹จ์ˆœํ•œ ๋ถˆํŽธํ•จ์„ ๋„˜์–ด์„œ

๊ฐœ๋ฐœ ์†๋„ ์ €ํ•˜๋กœ ์ด์–ด์กŒ๋‹ค.

 

 


๐Ÿ” ์›์ธ ๋ถ„์„

์ฒ˜์Œ์—๋Š” ๋‹จ์ˆœํžˆ "์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งŽ์•„์„œ ๊ทธ๋Ÿฐ๊ฐ€ ๋ณด๋‹ค" ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ,

๋ฌธ์ œ์˜ ๋ณธ์งˆ์„ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ์ง์ ‘ ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์›์ธ์„ ์ถ”์ ํ•ด๋ณด์•˜๋‹ค.

 

 

1๏ธโƒฃ node_modules ๊ตฌ์กฐ์˜ ๋น„ํšจ์œจ์„ฑ

npm์€ ๋ชจ๋“  ์˜์กด์„ฑ์„ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋ณต์ œํ•˜์—ฌ ์„ค์น˜ํ•˜๋Š”๋ฐ,

์ด ๊ณผ์ •์—์„œ ์ค‘๋ณต๋œ ๋ฒ„์ „์˜ ํŒจํ‚ค์ง€๋“ค์ด ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ๋กœ ์„ค์น˜๋˜๋ฉฐ,

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋น„์ •์ƒ์ ์œผ๋กœ ๊นŠ์€ ํŠธ๋ฆฌ ๊ตฌ์กฐ์™€ ๋””์Šคํฌ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

2๏ธโƒฃ ๋””์Šคํฌ ๊ธฐ๋ฐ˜ ํƒ์ƒ‰ ๋ฐฉ์‹์˜ ํ•œ๊ณ„

ํ”„๋กœ์ ํŠธ์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ import๋‚˜ require ํ•  ๋•Œ,

ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋Š” node_modules ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์œ„๊นŒ์ง€ ์ˆœํšŒํ•˜๋ฉฐ ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์—

์ด ๊ณผ์ •์€ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๋ฐ˜๋ณต์ ์ธ ์ ‘๊ทผ์„ ๋ฐœ์ƒ์‹œํ‚ค๋ฉฐ,

๊ฒฐ๊ณผ์ ์œผ๋กœ ๋””์Šคํฌ I/O ๋น„์šฉ์„ ์ฆ๊ฐ€ํ•˜๊ณ , ์„ค์น˜ ์†๋„๊ฐ€ ์ €ํ•˜๋˜๋Š” ์ฃผ์š” ์›์ธ์ด ๋œ๋‹ค.

 

3๏ธโƒฃ ์บ์‹œ ๋ฐ ์žฌ์„ค์น˜์˜ ๋น„ํšจ์œจ์„ฑ

package-lock.json์ด ์กด์žฌํ•˜๋”๋ผ๋„, ์ž‘์€ ๋ณ€๊ฒฝ์ด ์ƒ๊ธฐ๋ฉด ์ „๋ถ€ ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•˜๋ฉฐ,

CI์—์„œ๋Š” ์ข…์ข… lock ํŒŒ์ผ ์ถฉ๋Œ ํ˜น์€ ์บ์‹œ ๋ˆ„๋ฝ์œผ๋กœ ์ธํ•ด npm install์ด ์‹คํŒจํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

 

 


๐Ÿ” ํ•ด๊ฒฐ ์‹œ๋„: PNPM์œผ๋กœ ๋ณ€๊ฒฝ

๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋Œ€์•ˆ์„ ๊ฒ€ํ† ํ•œ ๋์— pnpm์„ ๋„์ž…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.

 

pnpm์€ ํ•˜๋“œ๋งํฌ ๊ธฐ๋ฐ˜์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ธฐ์—

๋””์Šคํฌ ๊ณต๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ ,

์„ค์น˜ ์†๋„๋ฅผ ๋น„์•ฝ์ ์œผ๋กœ ํ–ฅ์ƒ์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ณผ์ •์€ ๊ฐ„๋‹จํ–ˆ๋‹ค.

๐Ÿ‘‰๐Ÿป ๊ธฐ์กด์˜ package-lock.json  ๋ฐ node_moduels ์ œ๊ฑฐ

๐Ÿ‘‰๐Ÿป pnpm install ๋ช…๋ น์–ด๋กœ package.json์„ pnpm-lock.yaml๋กœ ๋ณ€ํ™˜

๐Ÿ‘‰๐Ÿป CI ํ™˜๊ฒฝ์—์„œ๋Š” actions/setup-pnpm ์•ก์…˜ ์ถ”๊ฐ€ ๋ฐ ์บ์‹œ ์ „๋žต ์ˆ˜์ •

 

์ „์ฒด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ํฐ ๋ณ€๊ฒฝ ์—†์ด ๋น„๊ต์  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ง„ํ–‰๋˜์—ˆ์œผ๋ฉฐ,

๊ธฐ์กด package.json ๊ตฌ์กฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์–ด์„œ

์•ˆ์ •์ ์œผ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋ฐ˜์‘ํ˜•