이 저장소는 Nx 도구를 활용하여 여러 스크래치 관련 프로젝트를 하나의 모노레포로 관리합니다. 포함된 주요 프로젝트:
| 프로젝트 | 설명 |
|---|---|
| scratch-gui | 스크래치 편집기의 사용자 인터페이스 |
| scratch-vm | 스크래치 프로젝트를 실행하는 가상 머신 |
| scratch-blocks | 블록 기반 프로그래밍 인터페이스 |
| scratch-l10n | 다국어 지원 라이브러리 |
- Node.js v16 이상 (v18 권장)
- npm v8 이상
- Git
- 저장소 클론:
git clone https://github.com/your-repo/scratch-monorepo.git
cd scratch-monorepo- 의존성 설치:
npm install- 누락된 Babel 관련 의존성 설치 (ESLint 오류 수정):
npm install --save-dev @babel/eslint-parsernpx nx run-many --target=build --all# scratch-gui 프로젝트 빌드
npx nx run scratch-gui:build
# 캐시 문제가 있는 경우 캐시 사용 안 함
npx nx run scratch-gui:build --skip-nx-cachecd scratch-gui
npm startnpx nx run scratch-gui:serve참고: 기본적으로 애플리케이션은 http://localhost:8601/ 주소에서 실행됩니다.
# 빌드
cd scratch-vm
npm run build
# 테스트
cd scratch-vm
npm test# 빌드 (prepublish 스크립트 사용)
cd scratch-blocks
npm run prepublish
# 테스트
cd scratch-blocks
npm test# 빌드
cd scratch-gui
npm run build
# 개발 서버 실행
cd scratch-gui
npm start
# 테스트
cd scratch-gui
npm test이 프로젝트는 GitHub Actions를 사용하여 CI/CD를 구성하고 있습니다. 다음과 같은 워크플로우가 설정되어 있습니다:
.github/workflows/ci.yml- 트리거:
main및develop브랜치 푸시, 풀 리퀘스트 - 작업:
- 테스트 실행
- 영향받은 프로젝트 빌드
- NX 캐시 사용 최적화
.github/workflows/agents.yml- 트리거:
main및develop브랜치 푸시, 풀 리퀘스트 - 작업:
- 병렬 빌드를 위한 NX Cloud 에이전트 실행
.github/workflows/deploy.yml- 트리거:
main브랜치 푸시, 수동 실행 - 작업:
- scratch-gui 프로젝트 빌드
- GitHub Pages에 배포
GitHub 저장소의 Settings > Secrets and variables > Actions에서 다음 시크릿 값을 설정해야 합니다:
NX_CLOUD_ACCESS_TOKEN: NX Cloud 액세스 토큰 (선택사항)SLACK_WEBHOOK_URL: Slack 알림을 위한 Webhook URL (선택사항)CNAME: 사용자 정의 도메인 이름 (선택사항)
Nx 캐시 문제가 발생하면 다음 명령어로 캐시를 초기화합니다:
rm -rf .nx/cache
npx nx reset| 문제 | 해결 방법 |
|---|---|
| React 버전 충돌 | 프로젝트는 React 18.2.0과 호환됩니다. React 19 사용 시 충돌이 발생할 수 있습니다. |
| scratch-blocks 빌드 오류 | scratch-blocks에는 build 스크립트 대신 prepublish 스크립트를 사용해야 합니다. |
| ESLint 오류 | 누락된 @babel/eslint-parser 설치로 해결 가능합니다. |
애플리케이션이 브라우저에 표시되지 않는 경우:
- 올바른 URL에 접속하는지 확인 (기본 http://localhost:8601/)
- 브라우저 개발자 콘솔(F12)에서 오류 메시지 확인
- 다른 브라우저로 시도
- 브라우저 캐시 삭제 후 재시도
- 포트 충돌이 있는 경우 다른 포트 사용
npx nx graphnpx nx run [프로젝트명]:[타겟]예: npx nx run scratch-gui:build
npx nx run-many --target=[타겟] --projects=[프로젝트1],[프로젝트2]npx nx affected --target=[타겟]-
각 프로젝트는 독립적인 package.json 파일을 가지고 있으므로, 특정 프로젝트에만 의존성을 추가하려면 해당 디렉토리에서 npm install 명령을 실행하세요
-
공통 의존성은 루트 package.json에 추가하는 것이 좋습니다.
-
프로젝트 구조를 변경할 때는 project.json 파일과 nx.json 파일을 함께 업데이트해야 합니다.
-
개발 중에는 각 프로젝트의 변경 사항이 다른 프로젝트에 미치는 영향을 고려하세요.
- 기능 개발이나 버그 수정은 별도의 브랜치에서 작업하세요.
- 코드 변경 전후로 테스트를 실행하여 기능이 제대로 작동하는지 확인하세요.
- 풀 리퀘스트를 제출하기 전에 코드 형식과 린트 규칙을 준수했는지 확인하세요.
이 프로젝트는 MIT 라이선스 하에 배포됩니다.
