모노레포에서 다른 프로젝트로 파일을 옮길 때 조심해야 할 점

2025. 4. 19. 14:54·Intern

현재 인턴으로 근무하는 회사의 웹 프론트엔드 프로젝트는 다수의 프로젝트를 단일 레포지토리에서 관리하는 모노레포 방식을 채택하고 있다.

 

common 프로젝트에 컴포넌트 A가 있었다. 컴포넌트 A가 common 프로젝트에 있긴 했지만 현재 내가 작업하고 있는 프로젝트 B에서 밖에 사용이 안되었고, 프로젝트 B에서 만든 api hook을 활용해 컴포넌트 A에서 데이터를 주고받아야 했기 때문에,

 

고민 끝에 컴포넌트 A를 common 프로젝트에서 프로젝트 B로 옮기기로 하였다.


1. 그냥 drag and drop을 하면 될 것이라 생각했지만

컴포넌트 A를 옮길 때 고려해야 될 내용이 있었나 싶었지만, vscode가 알아서 업데이트해주겠지 싶어서 일단은 그냥 drag and drop으로 파일을 옮겼다.

 

옮기고 나서 vscode가 자동으로 import를 업데이트해주어서 에러가 발생하지 않는 것처럼 보였다.

 

계속 프로젝트 B의 작업을 하다가 common 프로젝트의 빌드의 watch를 끄고 (common project에서 ‘pnpm run build —watch’ 명령어를 입력해야 common 프로젝트에서의 변경 내용이 바로 반영이 된다),

 

잠시 후에 다시 watch를 키니,

프로젝트 B 에서 common 프로젝트의 컴포넌트를 인식하지 못하고 수많은 에러가 발생했다.


2. 에러가 왜 발생했을까(tsconfig.json을 살펴보자)

왜 common 프로젝트 경로를 인식하지 못했을까? 처음에는 그냥 에러가 발생했나 싶어서 다시 common을 빌드하고, 이래도 에러가 계속 발생했길래 모든 프로젝트를 다시 빌드하기도 하였다.

 

그럼에도 에러는 계속 발생했고, 파일을 옮기기 전으로 커밋을 되돌려보니 에러가 발생하지 않았기에,

파일을 drag and drop으로 옮기면서 바뀐 내용 중 일부가 오류를 발생시켰음을 깨닫게 되었다.

 

 

무슨 파일이 바뀌었나 살펴보니 common/tsconfig.json의 내용이 바뀌어있었다. common 프로젝트에 있는 파일을 다른 프로젝트로 옮기는 순간, include에 해당 파일이 옮긴 프로젝트의 경로로 삽입되어 있었다.

  // 이전
  "include": ["src"]
  
  // 이후
  "include": ["src", "../../../packages/projectB/src/ComponentForBlog.tsx"]

그리고 이 이후에 빌드가 되면, common/dist가 기존 common 프로젝트의 파일들 뿐만이 아니라 프로젝트 B의 파일들 또한 빌드가 되어 있었다!

 

터미널에서 common/dist에서 ls -la를 해본 결과

// 이전
drwxr-xr-x@ 13 myname  staff   416  4 19 14:35 .
drwxr-xr-x@  9 myname  staff   288  3 15 16:08 ..
drwxr-xr-x@ 11 myname  staff   352  4 19 14:35 api
drwxr-xr-x@ 30 myname  staff   960  4 19 14:35 components
drwxr-xr-x@  4 myname  staff   128  4 19 14:35 globalStyle
drwxr-xr-x@ 19 myname  staff   608  4 19 14:35 handler
drwxr-xr-x@ 34 myname  staff  1088  4 19 14:35 hooks
-rw-r--r--@  1 myname  staff  2335  4 19 14:35 index.d.ts
-rw-r--r--@  1 myname  staff  5915  4 19 14:35 index.js
drwxr-xr-x@ 55 myname  staff  1760  4 19 14:35 modules
drwxr-xr-x@  4 myname  staff   128  4 19 14:35 recoil
drwxr-xr-x@ 32 myname  staff  1024  4 19 14:35 resource
drwxr-xr-x@ 46 myname  staff  1472  4 19 14:35 utils

// 이후 (common/tsconfig.json에 project B의 경로가 포함되어 있을 때)
common projectB

따라서 파일을 다른 프로젝트로 이동시킬 때 자동으로 바뀌는 common/tsconfig.json의 include를 삭제하고 빌드를 해줘야 다른 프로젝트에서 common/dist에 있는 컴포넌트들의 경로를 잘 찾을 수 있다.

 

 

왜 파일을 drag and drop을 할 때 tsconfig.json의 include가 업데이트되었는지는 조금 더 탐구가 필요할 것 같다. 다른 컴퓨터에서 drag and drop을 할 때에는 이런 일이 발생하지 않았었다.

→ 아무튼 결론은, 어떤 프로젝트의 파일을 다른 프로젝트로 옮길 때 tsconfig.json을 잘 살펴보자!

저작자표시 비영리 변경금지 (새창열림)

'Intern' 카테고리의 다른 글

useRef를 활용하여 stale closure를 해결해보자  (0) 2025.05.17
배경이 따라오는 메모장을 만들기 위해 contentEditable을 사용해보자  (0) 2025.04.19
네이버 지도 api 사용 시 마커가 많을 때 최적화 후기  (1) 2025.03.15
'Intern' 카테고리의 다른 글
  • useRef를 활용하여 stale closure를 해결해보자
  • 배경이 따라오는 메모장을 만들기 위해 contentEditable을 사용해보자
  • 네이버 지도 api 사용 시 마커가 많을 때 최적화 후기
퀵차분
퀵차분
웹 프론트엔드 개발자를 꿈꾸고 있습니다 :)
  • 퀵차분
    QC's Devlog
    퀵차분
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • Frontend (28)
        • HTML, CSS (7)
        • Javascript (3)
        • React (11)
        • Typescript (2)
        • Next.js (4)
      • Node.js (3)
      • Study (40)
        • Modern JS Deep Dive (13)
        • SQL (1)
        • Network (1)
        • 프롬프트 엔지니어링 (4)
        • 인공지능 (9)
        • 시스템프로그래밍 (11)
        • 선형대수학 (1)
      • Intern (4)
      • KUIT (20)
      • Algorithm (48)
        • Baekjoon(C++) (26)
        • Programmers(JavaScript) (22)
      • 우아한테크코스(프리코스) (4)
      • Project (7)
        • PROlog (4)
        • Nomadcoder (2)
      • 생각 (4)
      • Event (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프론트엔드
    백준
    javascript
    음악추천
    알고리즘
    티스토리챌린지
    타입스크립트
    HTML
    프롬프트 엔지니어링
    프로그래머스
    KUIT
    오블완
    자바스크립트
    typescript
    react
    next.js
    인공지능
    프로그래머스 자바스크립트
    시스템프로그래밍
    리액트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
퀵차분
모노레포에서 다른 프로젝트로 파일을 옮길 때 조심해야 할 점
상단으로

티스토리툴바