ํจํค์ง ๋งค๋์ ์ ๋ํด ๊ณต๋ถํ๊ณ Yarn PnP๋ฅผ ์ ์ฉํ๋ ๊ณผ์ ์์ ์์กด์ฑ ์ค์น๋ ๋ค ๋๋ฌ์ง๋ง ๋ชจ๋์ ์ฐพ์ง ๋ชปํ๋ค๋ ts ์๋ฌ๊ฐ ๋ฐ์ํ๊ณ ์๋ค.

์๋๋ import React๋ง ์
๋ ฅํด๋ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ์๋ ์์ฑ์ด ๋์ค๋๋ฐ ๊ทธ๊ฒ์กฐ์ฐจ ๋์ค์ง ์์ ๋ด๊ฐ ์ง์ ์์ฑ์ ํ์๋ค.

๊ทธ๋ ๋ค๋ฉด ์ค์ ๋ก ์์กด์ฑ์ด ์ ๋๋ก ์ค์น๋์ด ์๋์ง ํ์ธ์ ํด๋ด์ผํ ๊ฒ ๊ฐ๋ค...!
// package.json ํ์ผ
{
"name": "yarn-template",
"packageManager": "yarn@4.3.1",
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
},
"dependencies": {
"next": "^14.2.4",
"react": "18.2.0",
"react-dom": "18.2.0"
},
"devDependencies": {
"@types/node": "^20.14.9",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"typescript": "^5.5.2"
}
}
.pnp.cjs ํ์ผ์๋ ์์กด์ฑ์ด ์ ์ค์น๋์ด ์๊ณ , ๊ฐ๋ฐ ๋ชจ๋๋ก ์คํ, ๋น๋ ํ
์คํธ ๋ชจ๋ ์ ์์ ์ผ๋ก ์๋์ ํ๋ค...
Yarn ๊ณต์๋ฌธ์ ์๋ํฐ SDK๋ฅผ ์ฝ์ด๋ณด๋ฉด ์ค๋งํธ IDE(VScode, IntelliJ ๋ฑ)์ Plug'n'Play ์ค์น๋ฅผ ์ฌ์ฉํ ๋ TypeScript๊ฐ ์๋ํ๋ ค๋ฉด ํน๋ณํ ๊ตฌ์ฑ์ด ํ์ํ๋ค๊ณ ๋์์๋ค.
Yarn PnP(Plug-and-Play) ๋ฐฉ์์์๋ ๋ชจ๋์ด ํ๋ก์ ํธ ํด๋ ๋ด์ ์ง์ ์ค์น๋์ง ์๊ณ , ๋์ ์ค์ ์บ์ ์์น์ ์ค์น๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ ๊ฐ์ ์์กด์ฑ ๊ด๋ฆฌ๊ฐ ๋ ํจ์จ์ ์ด์ง๋ง, ์ผ๋ถ IDE ํ์ฅ ํ๋ก๊ทธ๋จ๋ค์ด ์ด ๋ฐฉ์์ ์ธ์ํ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
์๋ฅผ ๋ค์ด, Prettier, TypeScript์ ๊ฐ์ ๋๊ตฌ๋ค์ ๋ชจ๋์ ์ง์ ์ฐพ์์ ์คํํ๋ ค ํ์ง๋ง, Yarn PnP ๋ฐฉ์์์๋ ๋ชจ๋์ด ๋ค๋ฅธ ์์น์ ์๊ธฐ ๋๋ฌธ์ ์คํ์ ์คํจํ ์ ์๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด SDK๋ฅผ ํตํด Yarn PnP ๋ฐฉ์๊ณผ IDE ํ์ฅ ํ๋ก๊ทธ๋จ ์ฌ์ด์ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ ์ญํ ์ ํ๋ ๊ฒ์ด๋ค.
1. ๊ฐ์ ํจํค์ง ์์ฑ
SDK๋ ์ค์ ํจํค์ง๋ค์ ๊ฐ์ธ๋ ๊ฐ์ ํจํค์ง๋ฅผ ์์ฑํ๋ค.
์ด ๊ฐ์ ํจํค์ง๋ ์ค์ ํจํค์ง๋ฅผ ํธ์ถํ๊ธฐ ์ ์ Yarn PnP ๋ก๋๋ฅผ ์๋์ผ๋ก ์ค์ ํ๋ค.
2. Yarn PnP ๋ก๋ ์ค์
Yarn PnP๋ Node.js ๋ฐํ์ ๋ด์์ ์ฝ์ ๋๋ ํน๋ณํ ๋ก๋๋ฅผ ์ฌ์ฉํ๋ค.
๊ฐ์ ํจํค์ง๋ ์ด ๋ก๋๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ํจํค์ง๋ฅผ ์ฐพ๊ณ ๋ก๋ํ ์ ์๊ฒ ํ๋ค.
3. IDE ํ์ฅ ํ๋ก๊ทธ๋จ ์ง์
Prettier, TypeScript ๋ฑ)๋ฅผ ์คํํ ๋ Yarn PnP๋ฅผ ๊ณ ๋ คํ์ง ์๋๋ค.์ด์ Yarn PnP์์ SDK๊ฐ ์ ํ์ํ์ง, ์ด๋ค ๋ฐฉ์์ผ๋ก ๋์ํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ์ฃผ๋์ง ์์์ผ๋ ์ ์ฉ ํ ์ฐจ๋ก์ด๋ค!
1. VSCode Extension์์ ZipFS - a zip file system ์ค์นํ๊ธฐ(์๋ ์ฌ์ง ์ฒ๋ผ ์๊ธด ๊ฒ ์ค์น)

2. ๋ช
๋ น์ด ์คํํ๊ธฐ(์คํ ํ๋ฉด .vscode/settings.json ํ์ผ์ด ์์ฑ๋๋ค)
yarn dlx @yarnpkg/sdks vscode
3. VSCode์์ ์ฌ์ฉ์ ์ ์ TS ์ค์ ํ์ฑํ ํ๊ธฐ
Ctrl + Shift + P ๋๋ฌ์ VSCode ์ค์ ์ด๊ธฐ
Select TypeScript Version ์
๋ ฅํด์ ํด๋ฆญํ๊ธฐ
Use Workspace Version or ์์
์์ญ ๋ฒ์ ์ฌ์ฉ ํด๋ฆญํ๊ธฐ
๐ฅ ํ์ง๋ง ๋๋ ์ค์ ์ค์ Use Workspace Version or ์์
์์ญ ๋ฒ์ ์ฌ์ฉ ์ด ์ต์
์ด ๋์ค์ง ์์๋ค...
๋ค๋ฅธ ๋ถ๋ค์ ๋ธ๋ก๊ทธ๋ฅผ ๋ณด๊ณ ์ฌ๋ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์๋ค!
Select TypeScript Version ํญ๋ชฉ์ด ๋์ค์ง ์๋ ๊ฒฝ์ฐ
Select TypeScript Version ์
๋ ฅํด๋ ์ ํญ๋ชฉ์ด ๋์ค์ง ์์ผ๋ .pnp.cjs๊ฐ์ ์๋ฌด ํ์ผ์ ํด๋ฆญํ๊ณ Select TypeScript Version ์
๋ ฅ์ ํด์ผํ๋ค.
Use Workspace Version or ์์
์์ญ ๋ฒ์ ์ฌ์ฉ ์ด๋ฐ ์ต์
์ด ๋์ค์ง ์๋ ๊ฒฝ์ฐ
playground๋ผ๋ ์ฌ๋ฌ ํ๋ก์ ํธ ํด๋๊ฐ ์๋ ๊ณณ์์ VSCode๋ฅผ ์คํํ๋ค ํ์ง๋ง ์ด๋ ๊ฒ ๋๋ฉด VSCode์์ ์ด๋ค ํด๋์์ Yarn Berry PnP ๊ตฌ์ฑ์ ์ฌ์ฉํด์ผ ํ ์ง ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ต์
์ด ๋์ค์ง ์๋๋ค๊ณ ํ๋ค.
playground๋ผ๋ ์ฌ๋ฌ ํ๋ก์ ํธ ํด๋๊ฐ ์๋ ๊ณณ์์ VSCode๋ฅผ ์คํํ ๊ฒฝ์ฐ ๋์ค์ง ์๋๋ค.
Yarn PnP๊ฐ ๊ตฌ์ฑ๋์ด ์๋ ํด๋๋ก VSCode๋ฅผ ์คํํ๋๊น ์ต์
์ด ์ ์์ ์ผ๋ก ๋์จ๋ค!
playground๋ผ๋ ์ฌ๋ฌ ํ๋ก์ ํธ ํด๋๊ฐ ์๋ ๊ณณ์์ VSCode๋ฅผ ์ผ๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋ ๋ฐฉ๋ฒ์ ์์ง ๋ชป์ฐพ์๋ค... ์์๋ ๋ถ์ ๋๊ธ๋ก ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค...!
์ด์ ๋ ์๋ฌ๊ฐ ์๊ธฐ์ง ์๊ณ ์ ์์ ์ผ๋ก ๋ชจ๋์ ์ธ์ํ๋ค!

๐ก ๋จ์ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋์
ํ๋ ๊ฒ์ด ์๋๋ผ ์๋ผ๋ ์ง๋ฌธ์ ๋์ง๊ณ ๊ทผ๊ฑฐ๋ฅผ ์ฐพ๋ ์ฌ๊ณ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค ๋ณด๋๊น ๊ธฐ์กด๋ณด๋ค ์กฐ๊ธ ๋ ๊น๊ฒ ๊ณต๋ถํ ์ ์๋ ๊ฒ ๊ฐ์์ ์ข์ ๊ฒ ๊ฐ๋ค!
Yarn ๊ณต์ ๋ฌธ์
yarn berry์์์ cannot find module ์๋ฌ ํด๊ฒฐ
yarn berry vscode module ๋ชป์ฐพ๋ ๋ฌธ์ ์ ๋ํด