λͺ¨λ Έλ ν¬ λμ
μ§κΈ νμ¬ νλ°νΈ νμ νλ‘μ νΈλ μλλ λλ©μΈ λ©λ΄λ³λ‘ λλμ΄μ λ©ν°λ ν¬ Multi repo λ°©μμΌλ‘ κ°λ°μ νμλ€. μ¦ κ°λ°μλ§λ€ λ ν¬μ§ν 리λ₯Ό νλνλ λ°λ‘ κ΄λ¦¬ν΄μ κ°λ°νμκ³ , νμλΌλ¦¬ λκ°μ uiλ₯Ό κ°λ°νλ€κ³ νμ¬λ μ μ₯μκ°μ 컨ν μ€νΈ 곡μ κ° μ΄λ €μμ κ°κ°μΈ κ°μκ° κ΄λ¦¬νλ λ ν¬μ§ν 리 λ΄λΆμμ λκ°μ uiλ₯Ό μ€λ³΅ν΄μ κ°λ°νκΈ°λ νλ€.
κ·Έλ°λ° μ΄μ μ¬λ¬κ³³μμ μ€λ³΅μΌλ‘ μ¬μ©νλ μ½λλ₯Ό 곡μ ν΄μ μ¬μ¬μ©μ±μ λμ΄κ³ νλμ μ½λλ² μ΄μ€μμ λͺ¨λ νλ‘μ νΈμ μ½λμ μμμ κ΄λ¦¬νμ¬ μλ‘μ κ΄κ³μ μμ‘΄μ±μ μ½κ² νμ ν μ μλλ‘ λͺ¨λ Έλ ν¬ νκ²½μ ꡬμΆνλ€.
λͺ¨λ Έλ ν¬ νκ²½μμ μ²μ κ°λ°νλ©΄μ νλ‘μ νΈ μ€νμ΄ μλ λκ° μμλλ° μ΄λ λ§μ£Όν μλ¬λ₯Ό μ 리νλ€.
Monorepo λΉλ λꡬ
Turborepo
ν΄λ ꡬ쑰
π¦ monorepo root folder
β£ πpackage.json
β π¦ apps
β β£ π app1
β β β£ πpublic
β β β£ πsrc
β β β£ πpackage.json
β β£ π app2
β β β£ πpublic
β β β£ πsrc
β β β£ πpackage.json
β π¦ packages
β β£ π package1
β β β£ πsrc
β β β πpackage.json
β ...
μ°λ¦¬νμ νλ‘μ νΈ λ³λ‘ μ¬μ¬μ©νκΈ° μ½λλ‘ λμμΈ μμ€ν themeμ΄λ μΈμ¦ κ΄λ ¨ λ‘μ§ authλ₯Ό internal ν¨ν€μ§λ‘ κ°λ°νμ¬ κ΄λ¦¬νκ³ μλ€.
apps>package.json
μ΅μμ νλ‘μ νΈμ package.json νμΌ
"scripts": {
"build": "turbo run build",
"dev": "turbo run dev",
"lint": "turbo run lint",
"test": "turbo run test",
"test:watch": "turbo run test:watch",
"format": "prettier --write \"**/*.{ts,tsx,md}\""
},
apps>app1>package.json
κ° νλ‘μ νΈ νμΌμ package.jsonμ μλμ κ°λ€
"scripts": {
"dev": "vite",
"build": "vite build -m prod",
"preview": "vite preview",
"test": "jest --passWithNoTests",
"stage": "vite -m stage",
"lint": "tsc && eslint . --ext ts,tsx --report-unused-disable-directives",
"msw": "npx msw init ./public --save"
},
νμλλ‘ npm run devλ‘ rootνμμ μλ κ°λ³ apps1 νλ‘μ νΈλ₯Ό λμ°λ €κ³ νλ€.
κ·Έλ°λ° μ΄λ° μλ¬λ©μμ§λ₯Ό λ§μ£Όνλ€.
μλ¬
Failed to resolve entry for package "λ΄λΆ ν¨ν€μ§ μ΄λ¦"
Failed to resolve entry for package "λ΄λΆ ν¨ν€μ§ μ΄λ¦". The package may have incorrect main/module/exports specified in its package.json. [plugin vite:dep-scan]
μ΅μμ rootλ‘ κ°μ `npm run dev`λ₯Ό μ³λ ν΄κ²°μ μλμλ€.
μλ¬ λ©μμ§λ μλμ κ°μλ€.
ERROR run failed: error preparing engine: Invalid persistent task configuration:
You have 11 persistent tasks but `turbo` is configured for concurrency of 10. Set --concurrency to at least 12
ν΄κ²°
rootμμ `build`λ₯Ό ν΄μΌ ν΄κ²° λμλ€!
λͺ¨λ Έλ ν¬ λ΄λΆμ 곡ν΅μΌλ‘ 곡μ νμ¬ μ¬μ©νλ ν¨ν€μ§λ€μ΄ λΉλκ° μλμ΄μ μκΈ°λ μ€λ₯μλ€. κ°λ³ apps νλ‘μ νΈμ ν¨ν€μ§κ° μ€μΉλμμ΄λ ν¨ν€μ§λ₯Ό λΉλνμ§ μμΌλ©΄ κ·Έ ν¨ν€μ§κ° λ²λ€λ§λμ§ μμκΈ° λλ¬Έμ μ¬μ©ν μκ° μλ€.
λ°λΌμ ν¨ν€μ§ κ°λ°μμλ ν¨ν€μ§μ μλ‘μ΄ μ λ°μ΄νΈ μ¬νμ κ°λ°νμ λ, λ€λ₯Έ νλ‘μ νΈμμ κ·Έ ν¨ν€μ§μ μ΅μ μ λ°μ΄νΈ μ¬νμ λ°μνκ³ μΆλ€λ©΄ ν΄λΉ ν¨ν€μ§λ₯Ό λΉλν΄μΌμ§λ§ λ‘컬μμλ μ΅μ μ¬νμ΄ λ°μλ ν¨ν€μ§λ‘ κ°λ°ν μκ° μλ€.
μΆκ°
μ΄νμ λ§μ£Όν μλ¬
No matching export in "ν¨ν€μ§ λ΄λΆ νμΌ κ²½λ‘" for import "ν¨ν€μ§ λͺ¨λμ΄λ¦"
μλ¬ λ°μν νμΌ
app1λ₯Ό `npm run dev`λ‘ μ€ννλλ°, app1μ `App.tsx` νμΌμμ μκΎΈ ν¨ν€μ§μμ export κ²½λ‘μ import νλ €λ λͺ¨λμ΄ λ§€μΉλλκ² μλ€λ μλ¬κ° λ΄λ€.
μμμ λΈλ‘κ·Έμ μμ±νλ λ΄μ©μ κΉλ¨Ήκ³ , npm install μ λ€μ μλνλλ° μ¬μ ν μ μ리;
ν΄λΉ μλ¬ λ°μνλ ν¨ν€μ§μμ `build`λ₯Ό ν΄μ£Όλ ν΄κ²°λμλ€. κΈ°μ‘΄μ λΉλλμ§ μμ ν¨ν€μ§ μλ‘ μμ±νλ λͺ¨λμ΄ λ€ λΆλ¬μ μ§μ§ μμλ κ²μ΄λ€!
λΉλν μ΄μ app1μ μ€ννλ©΄ λ¬Έμ μμ΄ μ μλνλ€
Reference
https://turbo.build/repo/docs/handbook/sharing-code/internal-packages#3-import-the-package
'React' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
debounceλ‘ μ€μκ° κ²μμ΄ api νΈμΆ μ€μ΄κΈ° (0) | 2024.02.07 |
---|---|
Typescript + React μ‘°κ±΄λΆ props μ λ¬νκΈ° - discriminated unions (0) | 2024.02.05 |
μ¬κ·ν¨μ κ²°κ³Όκ° useMemoλ‘ μ¬λ λλ§ λ°©μ§ (0) | 2024.01.17 |
rtk query μλ² response body payload κ° λ°λ‘ μ κ°μ Έμμ§λ μ΄μ (1) | 2023.11.22 |
axios post μμ²μ ν€λ, νλΌλ―Έν° μ 보λ΄μ§λ μ€λ₯ (0) | 2023.11.01 |