TL;DR

  • Monoswan은 pnpm, npm, Yarn, Bun 워크스페이스에서 패키지를 찾아 공통 설정을 정의하고 검사하며 새 패키지 생성에도 재사용하는 모노레포 관리 도구임.
  • package.json, TypeScript, JSON, 텍스트 파일 설정을 조합 가능한 변형(variant)으로 중앙 관리함.
  • 기본 제공 또는 사용자 정의 규칙으로 패키지 일관성을 검사하고 자동 수정(autofix)을 지원함.
  • 변형의 기본값과 초기화 콘텐츠를 사용해 패키지 템플릿을 생성함.
  • Node.js 22.13 이상과 pnpm-workspace.yaml 또는 루트 package.json의 워크스페이스 선언이 필요함.

Monoswan 소개

  • Monoswan은 모노레포의 패키지 설정을 일관되게 유지하는 도구임.
  • 공통 패키지 형태를 한 번 정의하고 규칙으로 검사하며, 같은 정의를 새 패키지 생성에도 활용함.
  • pnpm, npm, Yarn, Bun의 워크스페이스 선언에서 패키지를 검색함.
  • 중앙 관리 설정은 조합 가능한 변형을 통해 package.json, TypeScript, JSON, 텍스트 파일 설정을 공유함.
  • 규칙과 일관성 검사에는 기본 제공 규칙이나 사용자 정의 규칙을 사용할 수 있으며 자동 수정도 지원함.
  • 패키지 템플릿은 변형의 기본값과 초기화 콘텐츠로 생성함.

빠른 시작 프롬프트

  • 다음 지시문을 코딩 에이전트에 입력해 Monoswan 설정을 진행할 수 있음.
  • Monoswan은 모노레포의 패키지 간 package.json, tsconfig.json 및 기타 표준 파일을 일관되게 유지하는 관리 도구임. 먼저 워크스페이스를 살펴 패키지 관리자, 구조, 기존 규칙을 유지하고, Monoswan을 루트의 개발 의존성으로 설치한 뒤 초기화 명령을 실행하도록 안내함.
  • 이어서 워크스페이스 패키지를 검토하고, 공통 package.json, TypeScript, JSON, 텍스트 파일 설정에 실용적인 변형을 monoswan.config.ts에 정의하도록 안내함.
  • 각 패키지에 적절한 변형을 지정하고 Monoswan 린터를 실행한 뒤, 관련 없는 동작은 바꾸지 않으면서 보고된 문제를 수정하고 변경한 설정과 파일을 요약하도록 안내함.
  • 전체 문서는 monoswan.com/llms.txt에서 확인할 수 있음.

요구 사항

  • Node.js 22.13 이상이 필요함.
  • pnpm-workspace.yaml 또는 루트 package.json의 workspaces 선언이 필요함.

설치 및 초기화

  • Monoswan을 워크스페이스 루트에 개발 의존성으로 설치함.
  • pnpm: pnpm add -D -w monoswan
  • npm: npm install -D monoswan
  • Yarn: yarn add -D -W monoswan
  • Bun: bun add -D monoswan
  • 설정 파일은 pnpm exec monoswan init으로 초기화함.
  • 다른 패키지 관리자를 사용하는 경우 아래 명령에서 pnpm exec monoswan 대신 npx monoswan, yarn monoswan 또는 bunx monoswan을 사용할 수 있음.
  • 워크스페이스 검색은 pnpm 워크스페이스 파일, npm 및 Bun의 workspaces 배열, 두 가지 Yarn 워크스페이스 형식을 지원하며 최신 Yarn 플러그 앤드 플레이(PnP) 설치도 포함함.
  • Monoswan은 워크스페이스 선언을 직접 읽으며 검색 과정에서 패키지 관리자를 실행하지 않음.

설정 및 패키지 검사

  • monoswan.config.ts에서 defineConfig, enforceVariants, sortPackageJson를 활용해 공통 패키지 형태와 규칙을 정의함.
  • 예시 설정은 my-library 변형에 package.json의 type: module과 TypeScript 설정의 strict: true를 지정하고, 변형 적용 및 package.json 정렬 규칙을 구성함.
  • 워크스페이스 패키지의 package.json에 monoswan.variants 배열을 추가해 my-library 변형을 지정함.
  • pnpm exec monoswan lint .으로 워크스페이스를 검사함.

명령어

  • monoswan lint [path]: 워크스페이스 패키지를 검사하며 --fix로 수정 사항을 적용할 수 있음.
  • monoswan init [path]: 초기 monoswan.config.ts를 생성함.
  • monoswan print-config [path]: 패키지에 적용된 설정을 출력함.
  • monoswan create-package <path> <name> <variants...>: 변형 템플릿으로 패키지를 생성함.
  • 전체 명령 구문은 pnpm exec monoswan <command> --help로 확인할 수 있음.

문서 및 지원

  • 전체 문서는 monoswan.com/docs에서 확인할 수 있음.
  • 버그 제보와 기능 요청은 프로젝트의 GitHub 이슈를 통해 접수함.

개발

  • 저장소는 pnpm을 사용하며 기여자 런타임 버전을 package.json에 고정함.
  • 개발 명령은 pnpm install, pnpm lint, pnpm check, pnpm test, pnpm build임.

라이선스

  • MIT