byuckchon-frontend-cli 1.9.7 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/README.md +59 -5
  2. package/package.json +8 -2
  3. package/src/commands/adopt.js +12 -3
  4. package/src/constants/versions.js +12 -46
  5. package/src/generators/createApp.js +13 -29
  6. package/src/generators/createBaseFiles.js +79 -311
  7. package/src/generators/createFolders.js +17 -1
  8. package/src/generators/createMonorepo.js +49 -236
  9. package/src/generators/createPackageJson.js +10 -11
  10. package/src/generators/scaffoldReviewAutomation.js +51 -30
  11. package/src/utils/ensureRequiredDependencies.js +35 -9
  12. package/src/utils/settingsAssets.js +27 -0
  13. package/templates/review-automation/github/pull_request_template.md +30 -0
  14. package/templates/review-automation/github/workflows/eslint-convention-review.monorepo.yml +8 -6
  15. package/templates/review-automation/github/workflows/eslint-convention-review.single.yml +6 -6
  16. package/templates/review-automation/github/workflows/pr-check.monorepo.yml +51 -0
  17. package/templates/review-automation/github/workflows/pr-check.single.yml +47 -0
  18. package/templates/review-automation/github/workflows/pr-description.yml +58 -0
  19. package/templates/review-automation/tools/review.config.mjs +9 -0
  20. package/templates/review-automation/tools/eslint-rules/internal-blocking-conventions.js +0 -1242
  21. package/templates/review-automation/tools/eslint-rules/internal-plugin.cjs +0 -8
  22. package/templates/review-automation/tools/eslint-rules/internal-rdjson-formatter.js +0 -60
  23. package/templates/review-automation/tools/eslint-rules/internal-warning-conventions.js +0 -57
  24. package/templates/review-automation/tools/eslint-rules/package.json +0 -3
  25. package/templates/review-automation/tools/eslint-rules/review.config.mjs +0 -22
  26. package/templates/review-automation/tools/post-eslint-review-comments.cjs +0 -309
@@ -0,0 +1,30 @@
1
+ ## 작업 내용
2
+
3
+ <!-- 무엇을, 왜 바꿨는지 적어주세요. -->
4
+
5
+ ## 확인 사항
6
+
7
+ <!-- 리뷰어가 중점적으로 봐야 할 부분이 있다면 적어주세요. -->
8
+
9
+ ## 테스트
10
+
11
+ - [ ] 로컬에서 동작 확인
12
+ - [ ] `lint` / `typecheck` / `build` 통과
13
+
14
+ <!--
15
+ 아래 마커 사이는 워크플로가 자동으로 채웁니다. 직접 수정하지 마세요.
16
+
17
+ - 커밋 내역: 커밋 메시지 첫 줄을 타입별로 묶습니다. (feat / fix / docs ...)
18
+ - 리뷰 포인트: 커밋 본문에 NOTE: 또는 TODO: 로 적은 줄을 모읍니다.
19
+
20
+ feat: 주문 목록 API 연동
21
+
22
+ NOTE: 응답 스키마가 미확정이라 any 가 남아 있습니다
23
+ TODO: 에러 처리 미구현
24
+
25
+ PR 제목은 브랜치명의 첫 토막이 대괄호로 붙습니다.
26
+ feature/update-mypage-style/hyuk + "마이페이지 디자인 적용"
27
+ → "[feature] 마이페이지 디자인 적용"
28
+ -->
29
+ <!-- byuckchon:commits:start -->
30
+ <!-- byuckchon:commits:end -->
@@ -1,9 +1,11 @@
1
1
  # ESLint 기반 기계적 컨벤션을 PR 인라인 댓글로 게시합니다.
2
2
  # typecheck/lint/build 성공 여부는 PR Check workflow가 담당합니다.
3
3
  #
4
- # 각 패키지의 eslint.config.mjs에는 internal 플러그인이 없으므로,
5
- # tools/eslint-rules/review.config.mjs 전용 config로 레포 루트에서
6
- # PR 변경 파일만 한 번에 검사합니다.
4
+ # 각 패키지의 eslint.config에는 internal 플러그인이 없으므로,
5
+ # tools/review.config.mjs 전용 config로 레포 루트에서 PR 변경 파일만 검사합니다.
6
+ #
7
+ # 규칙과 게시 스크립트는 @byuckchon-frontend/settings 가 제공합니다.
8
+ # 프로젝트에 규칙 사본을 두지 않으므로, 규칙 변경은 settings 버전 업으로 반영됩니다.
7
9
 
8
10
  name: ESLint Convention Review
9
11
 
@@ -62,9 +64,9 @@ jobs:
62
64
 
63
65
  set +e
64
66
  pnpm exec eslint "${changed_files[@]}" \
65
- --config tools/eslint-rules/review.config.mjs \
67
+ --config tools/review.config.mjs \
66
68
  --no-error-on-unmatched-pattern \
67
- -f tools/eslint-rules/internal-rdjson-formatter.js \
69
+ -f node_modules/@byuckchon-frontend/settings/src/eslint/internal-rdjson-formatter.js \
68
70
  -o /tmp/eslint-conventions.rdjson
69
71
  eslint_exit=$?
70
72
  set -e
@@ -81,6 +83,6 @@ jobs:
81
83
  REPO: ${{ github.repository }}
82
84
  HEAD_SHA: ${{ github.event.pull_request.head.sha }}
83
85
  run: |
84
- node tools/post-eslint-review-comments.cjs \
86
+ npx --no-install byuckchon-eslint-review-comments \
85
87
  /tmp/eslint-conventions.rdjson \
86
88
  eslint-conventions
@@ -21,7 +21,7 @@ jobs:
21
21
 
22
22
  - uses: actions/setup-node@v4
23
23
  with:
24
- node-version: 22
24
+ node-version-file: .nvmrc
25
25
  cache: npm
26
26
 
27
27
  - name: 의존성 설치
@@ -34,11 +34,11 @@ jobs:
34
34
  REPO: ${{ github.repository }}
35
35
  HEAD_SHA: ${{ github.event.pull_request.head.sha }}
36
36
  run: |
37
- npx eslint . --ext ts,tsx --rulesdir tools/eslint-rules \
38
- --rule 'internal-blocking-conventions:error' \
39
- --rule 'internal-warning-conventions:warn' \
40
- -f tools/eslint-rules/internal-rdjson-formatter.js \
37
+ npx eslint . \
38
+ --config tools/review.config.mjs \
39
+ --no-error-on-unmatched-pattern \
40
+ -f node_modules/@byuckchon-frontend/settings/src/eslint/internal-rdjson-formatter.js \
41
41
  -o /tmp/eslint-conventions.rdjson || true
42
- node tools/post-eslint-review-comments.cjs \
42
+ npx --no-install byuckchon-eslint-review-comments \
43
43
  /tmp/eslint-conventions.rdjson \
44
44
  eslint-conventions
@@ -0,0 +1,51 @@
1
+ # PR Check — 모노레포
2
+ #
3
+ # 기계적인 컨벤션은 ESLint Convention Review workflow 가 인라인 댓글로 알려주고,
4
+ # 이 workflow 는 "머지해도 되는가"(lint / typecheck / build 성공 여부)를 판정합니다.
5
+ #
6
+ # turbo 가 변경된 패키지만 골라 실행하고 캐시를 재사용합니다.
7
+ # 프로젝트 사정에 맞게 자유롭게 수정하세요. 이 파일은 프로젝트 소유입니다.
8
+
9
+ name: PR Check
10
+
11
+ on:
12
+ pull_request:
13
+ types: [opened, synchronize, reopened]
14
+ branches:
15
+ - dev
16
+
17
+ concurrency:
18
+ group: pr-check-${{ github.event.pull_request.number }}
19
+ cancel-in-progress: true
20
+
21
+ jobs:
22
+ check:
23
+ name: Lint · Typecheck · Build
24
+ runs-on: ubuntu-latest
25
+ permissions:
26
+ contents: read
27
+
28
+ steps:
29
+ - uses: actions/checkout@v4
30
+ with:
31
+ # turbo 가 변경 범위를 계산할 수 있도록 히스토리를 가져옵니다.
32
+ fetch-depth: 0
33
+
34
+ - uses: pnpm/action-setup@v4
35
+
36
+ - uses: actions/setup-node@v4
37
+ with:
38
+ node-version-file: .nvmrc
39
+ cache: pnpm
40
+
41
+ - name: 의존성 설치
42
+ run: pnpm install --frozen-lockfile
43
+
44
+ - name: Lint
45
+ run: pnpm lint
46
+
47
+ - name: Typecheck
48
+ run: pnpm typecheck
49
+
50
+ - name: Build
51
+ run: pnpm build
@@ -0,0 +1,47 @@
1
+ # PR Check — 단일 프로젝트
2
+ #
3
+ # 기계적인 컨벤션은 ESLint Convention Review workflow 가 인라인 댓글로 알려주고,
4
+ # 이 workflow 는 "머지해도 되는가"(lint / typecheck / build 성공 여부)를 판정합니다.
5
+ #
6
+ # 프로젝트 사정에 맞게 자유롭게 수정하세요. 이 파일은 프로젝트 소유입니다.
7
+ # - 대상 브랜치가 dev 가 아니라면 아래 branches 를 바꾸세요.
8
+ # - 테스트가 있다면 마지막에 단계를 추가하세요.
9
+
10
+ name: PR Check
11
+
12
+ on:
13
+ pull_request:
14
+ types: [opened, synchronize, reopened]
15
+ branches:
16
+ - dev
17
+
18
+ concurrency:
19
+ group: pr-check-${{ github.event.pull_request.number }}
20
+ cancel-in-progress: true
21
+
22
+ jobs:
23
+ check:
24
+ name: Lint · Typecheck · Build
25
+ runs-on: ubuntu-latest
26
+ permissions:
27
+ contents: read
28
+
29
+ steps:
30
+ - uses: actions/checkout@v4
31
+
32
+ - uses: actions/setup-node@v4
33
+ with:
34
+ node-version-file: .nvmrc
35
+ cache: npm
36
+
37
+ - name: 의존성 설치
38
+ run: npm ci
39
+
40
+ - name: Lint
41
+ run: npm run lint
42
+
43
+ - name: Typecheck
44
+ run: npm run typecheck
45
+
46
+ - name: Build
47
+ run: npm run build
@@ -0,0 +1,58 @@
1
+ # PR 본문에 커밋 내역을 자동으로 채워 넣습니다.
2
+ #
3
+ # 사람이 쓴 내용은 건드리지 않고, 아래 마커 사이만 갱신합니다.
4
+ # <!-- byuckchon:commits:start --> ~ <!-- byuckchon:commits:end -->
5
+ # 마커가 없으면 본문 끝에 한 번 덧붙입니다. (PR 템플릿이 없어도 동작)
6
+ #
7
+ # 커밋 메시지를 `feat:` `fix:` 처럼 쓰면 타입별로 묶이고,
8
+ # 컨벤션을 안 지킨 커밋은 "분류 없음"으로 모입니다.
9
+ #
10
+ # 커밋 본문에 NOTE: 또는 TODO: 로 적은 줄은 "리뷰 포인트"로 따로 모입니다.
11
+ # AI 로 코드를 짤 때 "여긴 리뷰어가 봐야 한다"를 남겨두는 용도로 쓰세요.
12
+ #
13
+ # PR 제목에는 브랜치명의 첫 토막이 대괄호로 붙습니다.
14
+ # feature/update-mypage-style/hyuk + "마이페이지 디자인 적용"
15
+ # → "[feature] 마이페이지 디자인 적용"
16
+ # 사람이 쓴 제목은 그대로 두고 앞에만 붙이며, 이미 대괄호가 있으면 건드리지 않습니다.
17
+ #
18
+ # 복사된 파일이므로 프로젝트 소유입니다. 대상 브랜치 등은 자유롭게 수정하세요.
19
+
20
+ name: PR Description
21
+
22
+ on:
23
+ pull_request:
24
+ types: [opened, synchronize, reopened]
25
+ branches:
26
+ - dev
27
+
28
+ concurrency:
29
+ group: pr-description-${{ github.event.pull_request.number }}
30
+ cancel-in-progress: true
31
+
32
+ jobs:
33
+ describe:
34
+ name: 커밋 내역 반영
35
+ # changeset 릴리즈 PR 처럼 봇이 연 PR 은 본문을 그대로 둔다.
36
+ if: ${{ !endsWith(github.event.pull_request.user.login, '[bot]') }}
37
+ runs-on: ubuntu-latest
38
+ permissions:
39
+ contents: read
40
+ pull-requests: write
41
+
42
+ steps:
43
+ - uses: actions/checkout@v4
44
+
45
+ - uses: actions/setup-node@v4
46
+ with:
47
+ node-version-file: .nvmrc
48
+
49
+ - name: PR 본문 갱신
50
+ env:
51
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
52
+ REPO: ${{ github.repository }}
53
+ PR_NUMBER: ${{ github.event.pull_request.number }}
54
+ run: |
55
+ # 프로젝트가 고정한 settings 버전을 그대로 사용합니다.
56
+ # (전체 의존성 설치 없이 이 패키지만 받아 실행)
57
+ VERSION=$(node -p "const p=require('./package.json'); (p.devDependencies?.['@byuckchon-frontend/settings'] ?? p.dependencies?.['@byuckchon-frontend/settings'] ?? 'latest')")
58
+ npx --yes --package "@byuckchon-frontend/settings@${VERSION}" byuckchon-pr-description
@@ -0,0 +1,9 @@
1
+ // ESLint Convention Review 워크플로 전용 config.
2
+ //
3
+ // 규칙 본체(internal 플러그인 + 컨벤션 규칙)는 @byuckchon-frontend/settings 가
4
+ // 관리합니다. 규칙이 바뀌면 settings 버전만 올리면 되고 이 파일은 그대로 둡니다.
5
+ //
6
+ // 이 프로젝트에만 해당하는 예외가 필요하면 아래에 이어붙이세요.
7
+ // import review from '@byuckchon-frontend/settings/eslint/review';
8
+ // export default [...review, { ignores: ['src/legacy/**'] }];
9
+ export { default } from '@byuckchon-frontend/settings/eslint/review';