
โ๏ธ ํจํค์ง ๋งค๋์ ๋ ์ด๋ป๊ฒ ์๋ํ ๊น
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ํ๋ฉด์ yarn install์ด๋ npm install์
๊ฑฐ์ ๋ฐ์ฌ์ ์ผ๋ก ์น๋ ๋ช ๋ น์ด ์ค ํ๋์ด๋ค.
๋๋ ๋ฌธ๋, "์ด ๋ช ๋ น์ด๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ด๋ค ์ผ์ ํ๊ณ ์๋๊ฑธ๊น?" ๋ผ๋ ๊ถ๊ธ์ฆ์ด ์๊ฒผ๋ค.
๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด ํจํค์ง ๋งค๋์ ๋
Resolution → Fetch → Link ๋ผ๋ ๊ณผ์ ์ ํตํด์
์ฐ๋ฆฌ๊ฐ ์ธ ์ ์๋ ์ํ๋ก ์์กด์ฑ์ ์ค๋นํด์ค๋ค.
๊ทธ๋ฐ๋ฐ ์ด ๊ณผ์ ์ ์ข ๋ ๊น์ด ์ดํดํ๊ณ ๋๋ฉด,
์ค๋ฌด์์ ๋ ์์ ์ ์ด๊ณ ์์ธก ๊ฐ๋ฅํ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ง๋ค ์ ์๋ค๋ ๊ฑธ ์๊ฒ ๋์๋ค.
๋ฐ๋ผ์ ์ด ๊ธ์์๋ ๊ฐ ๋จ๊ณ๊ฐ ์ด๋ค ์ญํ ์ ํ๋์ง,
์ด๋ป๊ฒ ๋์ํ๋ ์ง๋ฅผ ํ๋์ฉ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค.
1๏ธโฃ Resolution ๋จ๊ณ (๋๊ตด ์ค์นํ ์ง ์ ํ๋ ๋จ๊ณ)
Resolution ๋จ๊ณ๋ ์ฝ๊ฒ ๋งํ๋ฉด,
์ด ํ๋ก์ ํธ์ ์ด๋ค ํจํค์ง๋ค์ด ํ์ํ๊ณ ,
๊ทธ ์ค ์ด๋ค ๋ฒ์ ์ ์ค์นํด์ผ ํ ์ง ๊ฒฐ์ ํ๋ ๊ณผ์ ์ด๋ค.
์๋ฅผ ๋ค์ด package.json์ ์๋์ฒ๋ผ ์ ํ ์๋ค๊ณ ํด๋ณด์.
{
"dependencies": {
"react": "^18.2.0",
"lodash": "~4.17.21"
}
}
ํจํค์ง ๋งค๋์ ๋ ์ฌ๊ธฐ์ ๋ช ์๋๋ฒ์ ๋ฒ์๋ฅผ ํด์ํด์
react๋ 18.2.0 ์ด์, 19.0.0 ๋ฏธ๋ง ์ค ๊ฐ๋ฅํ ์ต์ ๋ฒ์ ์,
lodash๋ 4.17.21 ์ด์, 4.18 ๋ฏธ๋ง ์ค ๊ฐ์ฅ ์์ ์ ์ธ ๋ฒ์ ์ ์ฐพ๋๋ค.
๋ํ, ๊ฐ ํจํค์ง๋ค์ด ๋ ์ด๋ค ํจํค์ง๋ฅผ ์์กดํ๊ณ ์๋์ง,
์ฆ ์์กด์ฑ์ ์์กด์ฑ(dependency of dependency)๋ ์ ๋ถ ๋ฐ๋ผ๊ฐ์ ์ ์ฒด ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ์์ ์ด ๋๋๋ฉด ์๊ธฐ๋ ๊ฒ ๋ฐ๋ก
yarn.lock ๋๋ package-lock.json์ด๋ค.
์ฌ๊ธฐ์๋ ๋๊ฐ ๋๊ตฌ๋ ์ด๋ค ๋ฒ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด์ผ ํ๋์ง์ ๋ํ ์ค๋ ์ท์ด ๋ด๊ธฐ๊ฒ ๋๋ค.
์ด๋ฌํ ๊ณผ์ ์ ๊ฑฐ์น๋ ์ด์ ๋
๋๊ฐ ์ค์นํ๋ , ์ธ์ ์ค์นํ๋ , ํญ์ ๊ฐ์ ์์กด์ฑ ๊ตฌ์กฐ๋ฅผ ์ ์งํ๊ธฐ ์ํจ์ด๋ค.
2๏ธโฃ Fetch ๋จ๊ณ (๊ฒฐ์ ๋ ๋ฒ์ ์ ํ์ผ์ ๋ฐ์์ค๋ ๋จ๊ณ)
Resolution ๋จ๊ณ์์ ์ด๋ค ๋ฒ์ ์ ํจํค์ง๋ฅผ ์ค์นํ ์ง ๊ฒฐ์ ๋์๋ค๋ฉด,
์ด์ ๋ ๊ทธ ์ค์ ํ์ผ์ ๋ฐ์์์ผ ํ ์ฐจ๋ก๋ค.
์ด๋ ์ํ๋๋ ๊ณผ์ ์ด Fetch ๋จ๊ณ์ธ๋ฐ, ๋ง ๊ทธ๋๋ก
๊ฒฐ์ ๋ ๋ฒ์ ์ ํจํค์ง๋ฅผ ๊ณต์ ์ ์ฅ์์์ ๋ค์ด๋ก๋ํ๋ ๊ณผ์ ์ด๋ค.
์ด ๋จ๊ณ์์ ์ฃผ๋ก ์ผ์ด๋๋ ์์ ์ ์๋์ ์ธ ๊ฐ์ง๊ฐ ์๋ค.
โ .tgz ํํ์ ์์ถ ํจํค์ง ๋ฐ์์ค๊ธฐ
โ ์บ์ ์ ์ฅ์์ ์ ์ฅํ๊ธฐ
โ ์ค๋ณต ๋ค์ด๋ก๋ ๋ฐฉ์งํ๊ธฐ (๊ฐ์ ๋ฒ์ ์ ๋ค์ ๋ค์ด๋ก๋ํ์ง ์๋๋ก)
์ด ๊ณผ์ ์์, ~/.yarn/cache/ , ~/.npm ๊ฐ์ ๋๋ ํ ๋ฆฌ์
์ด๋ ๊ฒ ๋ค์ด๋ก๋ํ ํจํค์ง๋ค์ด ์บ์ ํํ๋ก ์ ์ฅ๋๋๋ฐ,
์ด ์บ์ ๋๋ถ์, ๊ฐ์ ํจํค์ง๋ฅผ ์ฌ๋ฌ ๋ฒ ์ค์นํด๋
์ด๋ฏธ ๋ฐ์ ํ์ผ์ ๋ค์ ๋ค์ด๋ก๋ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์
์๋๊ฐ ํจ์ฌ ๋นจ๋ผ์ง๋ค.
์ ๋ฆฌํ์๋ฉด, Fetch ๋จ๊ณ๋
๊ฒฐ์ ๋ ๋ฒ์ ์ ํจ์จ์ ์ผ๋ก ๊ฐ์ ธ์ค๋ ๊ณผ์ ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
3๏ธโฃ Link ๋จ๊ณ (์ฝ๋์์ ์ธ ์ ์๊ฒ ์ฐ๊ฒฐํด์ฃผ๋ ๋จ๊ณ)
์ด์ ํ์ํ ํจํค์ง๋ฅผ ๋ค ๋ฐ์์ผ๋,
๋ง์ง๋ง์ผ๋ก ํด์ผ ํ ์ผ์
์ด๊ฑธ ์ค์ ์ฝ๋์์ ์ฌ์ฉํ ์ ์๊ฒ ์ฐ๊ฒฐํด์ฃผ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ์์ ์ ํด์ฃผ๋ ๊ฒ ๋ฐ๋ก Link ๋จ๊ณ์ด๋ค.
๊ทธ๋ฌ๋ ์ด Link ๋จ๊ณ๋ ์๊ฐ๋ณด๋ค ๋ณต์กํ๊ณ ,
ํจํค์ง ๋งค๋์ ๋ง๋ค ์ฐจ์ด๊ฐ ๋ง์ด ๋๋ค.
๋ฐ๋ผ์ ํจํค์ง ๋งค๋์ ์ ํ๋ณ๋ก ์์๋ณด๊ณ ์ ํ๋ค.
๐ธ npm ๋ฐฉ์
npm์ node_modules ํด๋์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ,
๊ฐ ํจํค์ง๋ฅผ ๊ทธ ์์ ๋ณต์ฌํด์ ๋ฃ๋๋ค.
์๋ฅผ ๋ค๋ฉด ์๋์ ๊ฐ์ ๊ตฌ์กฐ๊ฐ ๋ง๋ค์ด์ง ๊ฒ์ด๋ค.
my-project/
โโโ node_modules/
โ โโโ react/
โ โโโ lodash/
์ด ๋ฐฉ์์ ํ์ผ ์์คํ ๊ธฐ๋ฐ์ด๋ผ ์ดํดํ๊ธฐ ์ฝ๊ณ , ํธํ์ฑ๋ ๋งค์ฐ ์ข์ง๋ง,
๊ตฌ์กฐ์ ์ผ๋ก ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ๋ค.
โ ์ฅ์
๐ ๊ฐ์ฅ ๋ณดํธ์ ์ธ ๋ฐฉ์์ผ๋ก, ๋๋ถ๋ถ์ ํด ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํธํ๋๋ค.
๐งฉ ๊ตฌ์กฐ๊ฐ ์ง๊ด์ ์ด๋ผ ๋๋ฒ๊น ์ด ์ฝ๋ค.
๐ค ์ค๋ ์๊ฐ ์จ์จ ๋ฐฉ์์ด๋ผ ๋ ๊ฑฐ์ ํ๋ก์ ํธ์์ ์์ ํ๋ค.
โ ๋จ์
๐ข ํจํค์ง๋ฅผ import ํ ๋๋ง๋ค ๋๋ ํ ๋ฆฌ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํ์ํด์ ์๋๊ฐ ๋๋ฆฌ๋ค.
๐ ์ฌ๋ฌ ํ๋ก์ ํธ๊ฐ ๋์ผํ ํจํค์ง๋ฅผ ์ด๋ค ํด๋, ๋งค๋ฒ ๋ฐ๋ก ๋ณต์ฌํด์ ์ ์ฅํ๊ธฐ์ ๋์คํฌ ๋ญ๋น๊ฐ ํฌ๋ค.
๐ ๋ฒ์ ์ด ๋ฏธ๋ฌํ๊ฒ ๋ค๋ฅด๋ฉด node_modules ์๋์ ์ค์ฒฉ ๋๋ ํ ๋ฆฌ๊ฐ ์๊ธฐ๊ณ , ํธ๋ฆฌ๊ฐ ๋ณต์กํด์ง๋ค.
๐ธ pnpm ๋ฐฉ์
pnpm์ npm์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ๋ฑ์ฅํ ๋ฐฉ์์ผ๋ก,
ํจํค์ง๋ฅผ ํ ๋ฒ๋ง ์ค์นํ๊ณ , ๊ฐ ํ๋ก์ ํธ์์๋ ๋งํฌ๋ง ๊ฑด๋ค๋ ํน์ง์ด ์๋ค.
์๋ฅผ ๋ค๋ฉด ์๋์ ๊ฐ์ ๊ตฌ์กฐ๊ฐ ๋ ๊ฒ ์ด๋ค.
~/.pnpm-store/ ← ์ฌ๊ธฐ์ ์ค์ ํจํค์ง๊ฐ ์ค์น๋จ
my-project/
โโโ node_modules/
โ โโโ react/ ← ์ฌ๊ธฐ๋ ์ค์ ๋ณต์ฌ๋ณธ์ด ์๋๋ผ ํ๋๋งํฌ
์ด ๊ธฐ๋ฐ์ ํ๋๋งํฌ ๊ธฐ๋ฐ์ ํจ์จ์ ์ธ ๊ตฌ์กฐ๋ก,
์ฌ๊ธฐ์๋ ์ฅ๋จ์ ์ด ์กด์ฌํ๋ค.
โ ์ฅ์
๐ ์ค๋ณต ๋ค์ด๋ก๋ ๋ฐ ์ค์น๊ฐ ์์ผ๋ฏ๋ก ์๋๊ฐ ๋น ๋ฅด๋ค.
๐พ ํ๋๋ง ์ค์นํด์ ์ฌ๋ฌ ํ๋ก์ ํธ๊ฐ ๊ณต์ ํ๋ฏ๋ก ๋์คํฌ๊ฐ ์ ์ฝ๋๋ค.
๐งน ์์กด์ฑ ์ถฉ๋์ด ์ ๊ณ , node_modules๋ ์ ๋๋ผ์ ๊น๋ํ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ค.
๐ npm ์ฒ๋ผ node_moduels๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ํธํ์ฑ ๋ฌธ์ ๊ฐ ์ ๋ค.
โ ๋จ์
๐งฐ ํ์ผ ์์คํ ์ ๋ ๊น์ด ํ์ฉํ๋ฏ๋ก, Windows ๋ฑ ์ผ๋ถ ํ๊ฒฝ์์ ํ๋๋งํฌ ๊ด๋ จ ์ด์๊ฐ ๋ฐ์ํ ์ ์๋ค.
๐ ์์กด์ฑ ๋๋ฒ๊น ์ด ๋ค์ ๋ณต์กํ ์ ์๋ค. (๋งํฌ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ๊ฐ์ผ ํ๊ธฐ ๋๋ฌธ์)
๐ธ Yarn Plug’n’Play (PnP)
Yarn PnP๋ ์์ ๋ฐ์์ ์ ํ์ ์๋ํ ๊ฒ์ด๋ค.
"์ ๊ตณ์ด node_modules ํด๋๋ฅผ ๋ง๋ค์ด์ผ ํ์ง?
๊ทธ๋ฅ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ผ๋ก ์ฐ๊ฒฐํด๋ฒ๋ฆฌ๋ฉด ์๋๋?"
๋ผ๋ ์๊ฐ์์ ์์๋ ๊ฒ์ผ๋ก,
๋์ ์๋ฆฌ๋ ์๋์ ๊ฐ๋ค.
1) yarn install ์ .pnp.cjs ํ์ผ์ ์์ฑํ๋ค.
2) ์ด ํ์ผ์ ์ด๋ค ํจํค์ง๊ฐ ์ด๋ค ๋ฒ์ ์ด๊ณ , ์ด๋์ ์ ์ฅ๋์ด ์๋์ง๋ฅผ JS ๊ฐ์ฒด(Map) ํํ๋ก ๊ด๋ฆฌํ๋ค.
3) Node.js๊ฐ ์คํ๋ ๋, ์ด ๋งคํ ์ ๋ณด๋ฅผ ๋ก๋ฉํด์ import/require ๊ฒฝ๋ก๋ฅผ ํด์ํ๋ค.
์ด ๋ฐฉ๋ฒ์๋ ์ญ์ ์ฅ๋จ์ ์ ์กด์ฌํ๋ค.
โ ์ฅ์
โก ๋๋ ํ ๋ฆฌ ์์ฑ ์์ด .zip ์บ์๋ง ์ฐ๋ฉด ๋ผ์ ์ค์น ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค.
๐ ์ฒ ์ ํ๊ฒ ๋ฒ์ ์ ๋ถ๋ฆฌํ๊ธฐ์ ์์กด์ฑ ์ถฉ๋์ด ๊ฑฐ์ ์๋ค.
๐ง dependencies์ ๋ช ์๋์ง ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ฉ ๋ถ๊ฐํ๊ธฐ์ ํ์ง ๊ด๋ฆฌ์ ์ ๋ฆฌํ๋ค.
โ ๋จ์
๐ฆ ์ผ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํด์์ PnP๋ฅผ ์ง์ํ์ง ์์์ ํธํ์ฑ ์ด์๊ฐ ์๋ค.
๐ ๏ธ .pnp.cjs , VSCode , webpack , babel ๋ฑ ์ถ๊ฐ ์ค์ ์ด ํ์ํ๋ค.
๐ฅ ๊ธฐ์กด node_moduels ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํ ๋๊ตฌ๋ค๊ณผ ์ถฉ๋์ด ์ผ์ด๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
โ ์ด์ ๋ฆฌ
| ๊ตฌ๋ถ | npm | pnpm | Yarn PnP |
| ์๋ | ๐ข ๋๋ฆผ | ๐ ๋น ๋ฆ | โก ๋งค์ฐ ๋น ๋ฆ |
| ๋์คํฌ ๊ณต๊ฐ | ๐ ๋ง์ด ์ | ๐พ ์ ๊ฒ ์ | ๐ฆ ์ต์ํ |
| ํธํ์ฑ | โ ์ต๊ณ | โ ๋์ | โ ๏ธ ๋ฎ์ |
| ์ค์ ๋์ด๋ | ๐ง ์ฌ์ | ๐ง ์ค๊ฐ | ๐ง ์ด๋ ค์ |
| ๋๋ฒ๊น ํธ์ | ์ฌ์ | ๋ณดํต | ์ด๋ ค์ |
| ์ฌ์ฉ ์ถ์ฒ ์ํฉ | ๋ณดํธ์ ์ธ ํ๋ก์ ํธ | ๋น ๋ฅธ ๊ฐ๋ฐ, ๋ชจ๋ ธ๋ ํฌ | ๊ณ ๋ํ๋ ํ๋ก์ ํธ ์๋ ๋ฐ ์ ํ์ฑ์ด ์ฐ์ ์ธ ๊ฒฝ์ฐ |
'๐ป๊ณต๋ถ ๊ธฐ๋ก > ๐ Frontend' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Frontend] ํ ์คํธ ์ฝ๋ ์์ฑํ๊ธฐ - Testing Library & Jest (2) | 2025.06.14 |
|---|---|
| [Frontend] prettier ์ ์ฉํ๊ธฐ (3) | 2025.06.14 |
| [Frontend] ํจํค์ง ๋งค๋์ (1) | 2025.06.03 |
| [Frontend] ๋ ๋๋ง์ 3๊ฐ์ง ๋ฐฉ์: CSR, SSR, SSG (2) | 2025.06.01 |
| [Frontend] ๋ ๋๋ง(Rendering)์ด๋ (0) | 2025.05.31 |