목록으로

공통 패키지 관련 이슈 모음

약 5분 읽기😎 일상#Development#모노레포#Trouble shooting댓글로 이동
main
date
Jul 12, 2024
slug
common-packages
author
status
Public
tags
Development
모노레포
Trouble shooting
summary
type
Post
thumbnail
category
😎 일상
updatedAt
Oct 17, 2025 12:22 AM
 

CASE 1 공통 패키지 불러오지 못함

 
 
추가
notion image
 
 
패키지 등록
 
 

CASE 2 Build 시 useContext 에러

 
notion image
 
UI 패키지의 경우 styled-components를 사용하고 있음
 
해당 컴포넌트를 platform에서 불러올 경우 해당 에러가 발생
 
→ platform 내의 package.json에 styled-component 추가
 

Peer Dependencies

위 이슈 관련해서 peer dependencies를 처음 사용해봤다.
 
dependencies
패키지들은 프로젝트의 런타임(실행)시에 필요한 패키지들이 속하게 되며 번들링 후에도 필요한 패키지 일 경우 여기에 속합니다.
 
devDependencies
개발과정 혹은 테스트과정에서만 필요한 패키지
번들링 이후에는 사용되지 않고 번들링 이전에 쓰이는 패키지만 포함
 
peerDependencies
프로젝트를 패키지 형태로 배포하는것이 목적일 때 사용
 
사용하는 패키지를 내부 또는 외부에서 사용하고 있을 때
 
 
 

CASE 3 apps 의 프로젝트에서 root의 env를 읽지 못함

 
비즈챗 프로젝트와 단리 유니서베이 모노레포 환경에서 루트의 env를 읽지 못함
 
루트는 dotenv-cli 이용
 
 

CASE 4 packages 에서 환경변수를 읽지 못함 (feat. axios base url)

 
 
 

CASE 5 터보레포 구조 공통 패키지 import 경로 path alias 사용 불가

 
// import { ProjectConfig } from "@/base"; <-- build 시 에러 발생 import { ProjectConfig } from "../../base/project"; export interface ProjectConfigOption { CONFIG: ProjectConfig; TITLE?: string; PLACEHOLDER?: string; LAST_MSG?: { TXT_COMPLETE: string; TXT_OVER: string; TXT_OUT: string; TXT_BAD: string; }; }
 
 
 
 
공통으로 사용하는 tsconfig.json에서 path alias를 지정해주기
 
packages > typescript-config > base.json
 
{ "$schema": "https://json.schemastore.org/tsconfig", "display": "Default", "compilerOptions": { "declaration": true, "declarationMap": true, "esModuleInterop": true, "incremental": false, "isolatedModules": true, "lib": ["es2022", "DOM", "DOM.Iterable"], "module": "NodeNext", "moduleDetection": "force", "moduleResolution": "node", "noUncheckedIndexedAccess": true, "resolveJsonModule": true, "skipLibCheck": true, "strict": true, "target": "ES2022", "paths": { "@apis/*": ["../../packages/services/src/apis/*"], // 경로 추가 "@lib/*": ["../../packages/services/src/lib/*"] // 경로 추가 } } }
 
packages > services > src > apis … 파일에서
 
import { axiosInstance } from "@lib/axios"; // path alias로 호출 import { ChartBody, Question } from "@unisurvey/interfaces/base"; /** * @description 결과 페이지 API 항목 정의 */ const RESULT = `/result` /** * @description 차트 데이터 불러오기 * @param {ChartBody} body * @return 타입 미정 */ export const getChartDataApi = async (body: ChartBody): Promise<Question> => { }
 
path alias 사용해도 build 시 패캐지를 못 찾지 않음