빌드는 모든 것을 모듈 안의 -/ 폴더에 씁니다:1my/hello/-/2├── index.html 배포 경로에 맞게 다시 쓰임3├── web.js 앱 전체, 파일 하나4├── web.css5├── web.locale=en.json 언어마다 하나6├── manifest.json7└── … `deploy` 지시자가 복사해 넣은 것들그 폴더가 곧 사이트입니다. 아무 정적 호스트에서 서빙하면 앱이 동작합니다.my/hello/의 나머지는 소스이고 -/는 생성물입니다. 작업 공간의 .gitignore가 -*를 무시하므로 빌드 결과가 프로젝트 자신의 이력에 들어가는 일은 없습니다. 웹에는 배포 브랜치를 통해 나갑니다.
워크플로는 스캐폴더가 써 주므로, 새 프로젝트는 푸시만으로 배포됩니다:1npxcreate-view-tree-lspmy/hello2gitpush.github/workflows/deploy.yml이 모듈을 빌드해 my/hello/-/를 gh-pages 브랜치로 푸시합니다. Settings → Pages → Source가 Deploy from a branch이고 gh-pages가 선택돼 있으면 GitHub가 그 브랜치를 서빙합니다. 그런 브랜치가 있는 저장소라면 그것이 바로 기본값입니다. URL이 404를 준다면 가장 먼저 확인할 설정입니다.이후 사이트는 https://<user>.github.io/<repo>/에 삽니다.
두 개의 액션이 전부를 떠받치고, 각각 입력은 두어 개입니다:1-uses:hyoo-ru/mam_build@master22with:3package:"my/hello"# 빌드할 폴더, 작업 공간 기준 경로4modules:"app"# 그 안의 어떤 모듈인지56-uses:hyoo-ru/gh-deploy@v4.4.17if:github.ref=='refs/heads/main'8with:9folder:"my/hello/app/-"mam_build는 여러분의 패키지 주위에 MAM 작업 공간을 펼치고, 코드 속 $name 토큰을 그것들이 사는 저장소로 풀어낸 다음 빌드합니다. 잠금 파일도 npminstall 단계도 필요 없습니다. 의존성 목록은 .meta.tree의 레지스트리 그 자체이며, 프로젝트 구조에서 설명한 그대로입니다.gh-deploy는 빌드된 폴더를 gh-pages에 커밋합니다. target-folder를 주면 루트 대신 하위 폴더에 놓이는데, 브랜치 미리보기가 그렇게 만들어집니다:1-name:Deployfeaturebranch2if:startsWith(github.ref,'refs/heads/feature/')3uses:hyoo-ru/gh-deploy@v4.4.14with:5folder:"my/hello/app/-"6target-folder:${{github.ref_name}}그러면 feature/* 브랜치마다 같은 Pages 사이트 위에 자기 URL이 생기고, delete 트리거가 브랜치가 사라질 때 폴더를 치웁니다.