모노레포 하나로 사이트 6개 — 공통 패키지 지도

작성 · 수정

  • 제작 일지
  • 모노레포
  • Astro
  • 공통 패키지
@site30cut/adsexport 35개
메뉴·아이콘3/7
광고3/4
검색·공유3/4
PWA·연출2/2
폼·계산 키트7/9
공통 화면5/9
메뉴·아이콘3/7
광고3/4
검색·공유2/4
PWA·연출2/2
폼·계산 키트4/9
공통 화면5/9
메뉴·아이콘4/7
광고3/4
검색·공유3/4
PWA·연출2/2
폼·계산 키트3/9
공통 화면5/9
메뉴·아이콘4/7
광고2/4
검색·공유3/4
PWA·연출2/2
공통 화면6/9
메뉴·아이콘3/7
광고2/4
검색·공유3/4
PWA·연출2/2
공통 화면5/9
메뉴·아이콘4/7
광고2/4
검색·공유3/4
PWA·연출2/2
공통 화면5/9
공통 패키지 하나를 사이트 6개가 나눠 쓰는 구조 사이트를 누르면 그 사이트가 쓰는 묶음(사용 수/전체)이 펼쳐집니다. 2026-10-28 빌드 기준
목록으로 보기
  1. @site30cut/ads — export 35개
    1. 계산모아 (도구형, 23개 사용)
      1. 메뉴·아이콘 3/7
      2. 광고 3/4
      3. 검색·공유 3/4
      4. PWA·연출 2/2
      5. 폼·계산 키트 7/9
      6. 공통 화면 5/9
    2. 글자수 (도구형, 19개 사용)
      1. 메뉴·아이콘 3/7
      2. 광고 3/4
      3. 검색·공유 2/4
      4. PWA·연출 2/2
      5. 폼·계산 키트 4/9
      6. 공통 화면 5/9
    3. 휴일모아 (도구형, 20개 사용)
      1. 메뉴·아이콘 4/7
      2. 광고 3/4
      3. 검색·공유 3/4
      4. PWA·연출 2/2
      5. 폼·계산 키트 3/9
      6. 공통 화면 5/9
    4. site30cut (소개형, 17개 사용)
      1. 메뉴·아이콘 4/7
      2. 광고 2/4
      3. 검색·공유 3/4
      4. PWA·연출 2/2
      5. 공통 화면 6/9
    5. 카페 고객 (소개형, 15개 사용)
      1. 메뉴·아이콘 3/7
      2. 광고 2/4
      3. 검색·공유 3/4
      4. PWA·연출 2/2
      5. 공통 화면 5/9
    6. 출장 광택 고객 (소개형, 16개 사용)
      1. 메뉴·아이콘 4/7
      2. 광고 2/4
      3. 검색·공유 3/4
      4. PWA·연출 2/2
      5. 공통 화면 5/9

첫 일지에서 사이트 6개를 한꺼번에 손본 이야기를 썼습니다. 그게 가능했던 이유는 사이트들이 같은 저장소(모노레포)에서 공통 패키지 하나를 나눠 쓰기 때문입니다. 이번 글은 그 구조를 지도로 그려 본 기록입니다. 위 그림에서 사이트 노드를 탭하면 그 사이트가 쓰는 묶음이 펼쳐지고, 「목록으로 보기」로 같은 내용을 글자로도 볼 수 있습니다.

무엇으로 이루어져 있나

저장소에는 공통 패키지 @site30cut/ads 하나와 사이트 6개가 있습니다. 직접 운영하는 사이트는 계산모아, 글자수, 휴일모아, site30cut(이 사이트)이고, 나머지 둘은 카페 고객 사이트와 출장 광택 고객 사이트입니다. 6개 사이트가 workspace 로 의존하는 패키지는 이 하나뿐입니다. 다른 사이트의 코드를 가져다 쓰는 일도 없습니다.

패키지는 export 33개를 내보내고, 이를 성격별로 6개 묶음으로 나눴습니다.

  • 메뉴 7개: 상단 메뉴, 펼침 메뉴, 아이콘
  • 광고 4개: 광고 영역, 애드센스 메타, 쿠팡 링크
  • 검색·공유 4개: OG 이미지, RSS, 분석 코드, 공유 버튼
  • PWA·연출 2개: 설치 매니페스트 연결, 계절 효과
  • 폼·계산 9개: 입력 검사, 계산 상태, 비교, 차트
  • 공통 화면 7개: 문의, 개인정보, 404, 언어 전환, 설정
공통 패키지: export 33개, 6개 묶음@site30cut/ads 메뉴 (7개) 광고 (4개) 검색·공유 (4개) PWA·연출 (2개) 폼·계산 (9개) 공통 화면 (7개)@site30cut/ads메뉴7개광고4개검색·공유4개PWA·연출2개폼·계산9개공통 화면7개
공통 패키지: export 33개, 6개 묶음 — 6개 사이트 모두 같은 패키지 하나를 씁니다

왜 하나로 묶었나

이유는 단순합니다. 메뉴, 광고 자리, PWA 설정을 사이트마다 따로 만들면 고칠 때마다 여섯 번 같은 일을 해야 하고, 한두 곳은 꼭 빠뜨립니다. 공통 패키지에 한 번 고치면 6곳이 같이 바뀌니 하룻저녁에 6개 사이트를 손볼 수 있었습니다. 대신 한 군데의 실수가 6곳에 번지는 위험도 같이 생깁니다. 그래서 공통 패키지를 바꿀 때는 사이트 6개를 모두 빌드해 보는 것을 기본으로 합니다.

결과 — 2026-10-19 빌드 기준

scripts/arch-tree.mjs 가 패키지의 export 와 각 사이트의 import 를 읽어 만든 값입니다. 그림과 아래 숫자는 같은 데이터에서 나옵니다.

  • 공통 패키지 export: 33개
  • 6개 사이트가 모두 쓰는 export: 12개
  • 사이트가 직접 쓰지 않고 패키지 안에서만 쓰는 export: 7개
  • 사이트별 사용 수: 계산모아 22개, 글자수 18개, 휴일모아 19개, site30cut 16개, 카페 고객 사이트 15개, 출장 광택 고객 사이트 16개
  • 폼·계산 키트를 쓰는 곳: 계산모아·글자수·휴일모아, 도구형 3곳뿐

공통 패키지(packages/site-ads)를 건드린 커밋은 git log --oneline -- packages/site-ads 로 세어 보니 2026-10-19 기준 29개였습니다.

사이트별 사용하는 export 수계산모아: 22개; 글자수: 18개; 휴일모아: 19개; site30cut: 16개; 카페 고객: 15개; 출장 광택 고객: 16개05101520계산모아22개글자수18개휴일모아19개site30cut16개카페 고객15개출장 광택 고객16개
사이트별 사용하는 export 수

다음 할 일

한계가 하나 있습니다. 이 그림은 site30cut 을 빌드할 때 만들어지는데, 다른 사이트의 import 만 바뀌면 site30cut 이 다시 배포되지 않습니다. 그림은 다음 site30cut 배포 때 갱신되고, 그래서 「빌드 기준일」을 같이 적어 둡니다. 다른 사이트 커밋마다 재배포를 걸면 비용이 더 크다고 판단했습니다.

또 하나는 공통 패키지의 버전 관리입니다. 지금은 모든 사이트가 항상 최신 패키지를 보지만, 사이트가 늘면 한 사이트만 옛 버전에 머물러야 할 때가 올 수 있습니다. 그때 어떤 방식이 맞는지는 실제로 필요해지면 다시 쓰겠습니다. 이런 구조로 사이트를 만드는 과정은 제작 과정에서도 볼 수 있습니다.

사이트를 만들어볼까요?

무료 상담 받기