Nx는 모노레포를 위한 스마트 빌드 시스템 및 개발 도구다. 의존성 그래프 분석으로 영향받은 프로젝트만 빌드·테스트하고, 원격 캐싱으로 CI 시간을 대폭 단축한다.
핵심 기능
| 기능 | 설명 |
|---|
| 영향 분석 | 변경된 코드가 영향을 미치는 프로젝트만 실행 |
| 계산 캐싱 | 동일 입력 결과를 로컬/원격 캐시 |
| 의존성 그래프 | 프로젝트 간 의존 관계 시각화 |
| 코드 생성기 | 일관된 프로젝트 구조 생성 |
| 플러그인 | React, Next.js, Node, NestJS 등 지원 |
프로젝트 구조
my-monorepo/
├── apps/
│ ├── web/ (Next.js 앱)
│ └── api/ (NestJS 앱)
├── libs/
│ ├── ui/ (공유 UI 컴포넌트)
│ ├── utils/ (공유 유틸리티)
│ └── types/ (공유 타입)
├── nx.json
└── package.json
주요 명령어
bash
# 특정 앱 실행
npx nx serve web
npx nx build api
# 영향받은 프로젝트만 테스트
npx nx affected --target=test
# 의존성 그래프 시각화
npx nx graph
# 코드 생성
npx nx generate @nx/react:library ui --directory=libs/ui
# 병렬 실행
npx nx run-many --target=build --all --parallel=3
# 원격 캐시 설정 (Nx Cloud)
npx nx connect-to-nx-cloud
nx.json 설정
json
{
"targetDefaults": {
"build": {
"dependsOn": ["^build"],
"cache": true,
"inputs": ["production", "^production"]
},
"test": {
"cache": true,
"inputs": ["default", "^production", "{workspaceRoot}/jest.preset.js"]
}
},
"namedInputs": {
"production": [
"default",
"!{projectRoot}/**/*.spec.ts",
"!{projectRoot}/jest.config.ts"
]
}
}
관련 문서