tylersong 1.0.5 → 1.0.7

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.
@@ -9,6 +9,10 @@ on:
9
9
  types: [completed]
10
10
  branches: [main]
11
11
 
12
+ permissions:
13
+ contents: write
14
+ packages: write
15
+
12
16
  jobs:
13
17
  check-ci:
14
18
  name: Check CI Status
@@ -33,56 +37,135 @@ jobs:
33
37
  echo "success=true" >> $GITHUB_OUTPUT
34
38
  fi
35
39
 
36
- version-check:
37
- name: Check Version Changes
40
+ auto-version:
41
+ name: Auto Version Update
38
42
  runs-on: ubuntu-latest
39
43
  if: |
40
44
  (github.event_name == 'push' && github.ref == 'refs/heads/main') ||
41
- startsWith(github.ref, 'refs/tags/v') ||
42
45
  (github.event_name == 'workflow_run' && needs.check-ci.outputs.ci-success == 'true')
43
46
  needs:
44
47
  - check-ci
45
48
  outputs:
46
- should-publish: ${{ steps.version-check.outputs.should-publish }}
47
- current-version: ${{ steps.version-check.outputs.current-version }}
49
+ should-publish: ${{ steps.version-update.outputs.should-publish }}
50
+ current-version: ${{ steps.version-update.outputs.current-version }}
51
+ version-updated: ${{ steps.version-update.outputs.version-updated }}
48
52
 
49
53
  steps:
50
54
  - name: Checkout code
51
55
  uses: actions/checkout@v4
56
+ with:
57
+ token: ${{ secrets.GITHUB_TOKEN }}
58
+ fetch-depth: 0
52
59
 
53
60
  - name: Setup Node.js environment
54
61
  uses: ./.github/actions/setup-runtime
55
62
  with:
56
63
  runtime: node
57
64
 
58
- - name: Check version changes
59
- id: version-check
65
+ - name: Configure Git
66
+ run: |
67
+ git config user.name "github-actions[bot]"
68
+ git config user.email "github-actions[bot]@users.noreply.github.com"
69
+
70
+ - name: Auto version update and check
71
+ id: version-update
60
72
  run: |
61
73
  CURRENT_VERSION=$(node -p "require('./package.json').version")
62
74
  PUBLISHED_VERSION=$(npm view tylersong version 2>/dev/null || echo "0.0.0")
63
-
64
- echo "current-version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
75
+
65
76
  echo "Current version: $CURRENT_VERSION"
66
77
  echo "Published version: $PUBLISHED_VERSION"
67
78
 
68
- # Tag push는 항상 배포
79
+ # Tag push는 항상 배포 (버전 체크만)
69
80
  if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
70
81
  echo "should-publish=true" >> $GITHUB_OUTPUT
71
- echo "Tag push detected: will publish"
72
- # main 브랜치는 버전이 다를 때만 배포
73
- elif [ "$CURRENT_VERSION" != "$PUBLISHED_VERSION" ]; then
74
- echo "should-publish=true" >> $GITHUB_OUTPUT
75
- echo "Version changed: will publish"
82
+ echo "current-version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
83
+ echo "version-updated=false" >> $GITHUB_OUTPUT
84
+ echo "Tag push detected: will publish without version update"
85
+ exit 0
86
+ fi
87
+
88
+ # 이미 같은 버전이 배포되어 있으면 자동으로 버전 업데이트
89
+ if [ "$CURRENT_VERSION" == "$PUBLISHED_VERSION" ]; then
90
+ echo "Same version exists, auto-updating version..."
91
+
92
+ # 최근 커밋 메시지 분석하여 semantic versioning 적용
93
+ LAST_COMMIT_MSG=$(git log -1 --pretty=%B)
94
+ echo "Last commit: $LAST_COMMIT_MSG"
95
+
96
+ # 커밋 메시지에 따라 버전 업데이트 타입 결정
97
+ if echo "$LAST_COMMIT_MSG" | grep -qE "BREAKING CHANGE|feat!|fix!"; then
98
+ VERSION_TYPE="major"
99
+ elif echo "$LAST_COMMIT_MSG" | grep -qE "^feat(\(.+\))?:"; then
100
+ VERSION_TYPE="minor"
101
+ else
102
+ VERSION_TYPE="patch"
103
+ fi
104
+
105
+ echo "Detected version type: $VERSION_TYPE"
106
+
107
+ # package.json 버전 업데이트
108
+ npm version $VERSION_TYPE --no-git-tag-version
109
+ NEW_VERSION=$(node -p "require('./package.json').version")
110
+
111
+ # TypeScript 소스 코드의 하드코딩된 버전도 업데이트
112
+ if [ -f "src/index.ts" ]; then
113
+ sed -i.bak "s/program\.version(\".*\")/program.version(\"$NEW_VERSION\")/g" src/index.ts
114
+ rm -f src/index.ts.bak
115
+ fi
116
+
117
+ echo "Updated version to: $NEW_VERSION"
118
+ echo "current-version=$NEW_VERSION" >> $GITHUB_OUTPUT
119
+ echo "should-publish=true" >> $GITHUB_OUTPUT
120
+ echo "version-updated=true" >> $GITHUB_OUTPUT
121
+
122
+ # 변경사항 커밋 및 푸시
123
+ git add package.json package-lock.json src/index.ts
124
+ git commit -m "chore: bump version to v$NEW_VERSION [skip ci]"
125
+ git push origin main
126
+
76
127
  else
77
- echo "should-publish=false" >> $GITHUB_OUTPUT
78
- echo "Version unchanged: skipping publish"
128
+ echo "Version already different: will publish"
129
+ echo "current-version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
130
+ echo "should-publish=true" >> $GITHUB_OUTPUT
131
+ echo "version-updated=false" >> $GITHUB_OUTPUT
79
132
  fi
80
133
 
134
+ version-check:
135
+ name: Check Version Changes (for tags)
136
+ runs-on: ubuntu-latest
137
+ if: startsWith(github.ref, 'refs/tags/v')
138
+ outputs:
139
+ should-publish: ${{ steps.version-check.outputs.should-publish }}
140
+ current-version: ${{ steps.version-check.outputs.current-version }}
141
+
142
+ steps:
143
+ - name: Checkout code
144
+ uses: actions/checkout@v4
145
+
146
+ - name: Setup Node.js environment
147
+ uses: ./.github/actions/setup-runtime
148
+ with:
149
+ runtime: node
150
+
151
+ - name: Check version for tag
152
+ id: version-check
153
+ run: |
154
+ CURRENT_VERSION=$(node -p "require('./package.json').version")
155
+ echo "current-version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
156
+ echo "should-publish=true" >> $GITHUB_OUTPUT
157
+ echo "Tag push detected: will publish"
158
+
81
159
  publish:
82
160
  name: Publish Package
83
161
  runs-on: ubuntu-latest
84
- needs: [version-check]
85
- if: needs.version-check.outputs.should-publish == 'true'
162
+ needs: [auto-version, version-check]
163
+ if: |
164
+ always() &&
165
+ (
166
+ (needs.auto-version.outputs.should-publish == 'true') ||
167
+ (needs.version-check.outputs.should-publish == 'true')
168
+ )
86
169
 
87
170
  steps:
88
171
  - name: Checkout code
@@ -126,7 +209,7 @@ jobs:
126
209
  script: |
127
210
  const { owner, repo } = context.repo;
128
211
  const tagName = context.ref.replace('refs/tags/', '');
129
- const version = '${{ needs.version-check.outputs.current-version }}';
212
+ const version = '${{ needs.auto-version.outputs.current-version || needs.version-check.outputs.current-version }}';
130
213
 
131
214
  await github.rest.repos.createRelease({
132
215
  owner,
@@ -149,8 +232,13 @@ jobs:
149
232
  notify:
150
233
  name: Notification
151
234
  runs-on: ubuntu-latest
152
- needs: [publish, version-check]
153
- if: always() && needs.version-check.outputs.should-publish == 'true'
235
+ needs: [publish, auto-version, version-check]
236
+ if: |
237
+ always() &&
238
+ (
239
+ (needs.auto-version.outputs.should-publish == 'true') ||
240
+ (needs.version-check.outputs.should-publish == 'true')
241
+ )
154
242
 
155
243
  steps:
156
244
  - name: Checkout code
@@ -162,11 +250,11 @@ jobs:
162
250
  if [ "${{ needs.publish.result }}" == "success" ]; then
163
251
  echo "status=success" >> $GITHUB_OUTPUT
164
252
  echo "title=패키지 배포 성공 🚀" >> $GITHUB_OUTPUT
165
- echo "description=tylersong v${{ needs.version-check.outputs.current-version }}이 NPM에 성공적으로 배포되었습니다!" >> $GITHUB_OUTPUT
253
+ echo "description=tylersong v${{ needs.auto-version.outputs.current-version || needs.version-check.outputs.current-version }}이 NPM에 성공적으로 배포되었습니다!" >> $GITHUB_OUTPUT
166
254
  else
167
255
  echo "status=failure" >> $GITHUB_OUTPUT
168
256
  echo "title=패키지 배포 실패 💥" >> $GITHUB_OUTPUT
169
- echo "description=tylersong v${{ needs.version-check.outputs.current-version }} 배포 중 오류가 발생했습니다." >> $GITHUB_OUTPUT
257
+ echo "description=tylersong v${{ needs.auto-version.outputs.current-version || needs.version-check.outputs.current-version }} 배포 중 오류가 발생했습니다." >> $GITHUB_OUTPUT
170
258
  fi
171
259
 
172
260
  - name: Create fields JSON
@@ -177,7 +265,7 @@ jobs:
177
265
  [
178
266
  {
179
267
  "name": "버전",
180
- "value": "v${{ needs.version-check.outputs.current-version }}",
268
+ "value": "v${{ needs.auto-version.outputs.current-version || needs.version-check.outputs.current-version }}",
181
269
  "inline": true
182
270
  },
183
271
  {
@@ -224,7 +312,7 @@ jobs:
224
312
  - name: Console output
225
313
  run: |
226
314
  if [ "${{ needs.publish.result }}" == "success" ]; then
227
- echo "✅ Package v${{ needs.version-check.outputs.current-version }} published successfully!"
315
+ echo "✅ Package v${{ needs.auto-version.outputs.current-version || needs.version-check.outputs.current-version }} published successfully!"
228
316
  echo "📦 NPM: https://www.npmjs.com/package/tylersong"
229
317
  else
230
318
  echo "❌ Package publish failed!"
package/README.md CHANGED
@@ -1,47 +1,99 @@
1
- # tylersong CLI
1
+ # 📝 tylersong
2
2
 
3
- ## 개요
3
+ > 안녕하세요! 프론트엔드 개발자 **송민성**의 자기소개 CLI 도구입니다 ✨
4
4
 
5
- 송민성의 개발자 프로필을 터미널에서 확인할 수 있는 TypeScript CLI 도구입니다.
5
+ [![NPM Version](https://img.shields.io/npm/v/tylersong)](https://www.npmjs.com/package/tylersong)
6
+ [![NPM Downloads](https://img.shields.io/npm/dm/tylersong)](https://www.npmjs.com/package/tylersong)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
8
 
7
- ## 빠른 시작
9
+ 터미널에서 간단한 명령어로 개발자 프로필을 확인하고, GitHub 링크에 빠르게 접근할 수 있습니다.
10
+
11
+ ## 🚀 빠른 시작
12
+
13
+ ### 즉시 실행 (권장)
8
14
 
9
15
  ```bash
10
16
  npx tylersong
11
17
  ```
12
18
 
13
- ## 문서
19
+ ### 전역 설치
14
20
 
15
- - **사용법**: [docs/usage.md](./docs/usage.md)
16
- - **배포 가이드**: [docs/deployment.md](./docs/deployment.md)
17
- - **워크플로우**: [docs/workflows.md](./docs/workflows.md)
18
- - **Discord 알림**: [docs/discord-setup.md](./docs/discord-setup.md)
19
- - **GitHub Actions 수정사항**: [docs/github-actions-fixes.md](./docs/github-actions-fixes.md)
21
+ ```bash
22
+ npm install -g tylersong
23
+ tylersong
24
+ ```
20
25
 
21
- ## 개발
26
+ ## 💻 사용법
22
27
 
23
- ### NPM 사용
28
+ ### 기본 실행
24
29
 
25
30
  ```bash
26
- npm install
27
- npm run dev
28
- npm run build
31
+ tylersong
32
+ # 저에 대해 궁금하신가요? 라는 질문에 답하면 프로필이 표시됩니다
29
33
  ```
30
34
 
31
- ### Bun 사용 (더 빠른 성능!)
35
+ ### 명령어 옵션
32
36
 
33
37
  ```bash
34
- bun install
35
- bun run dev:bun # TypeScript 직접 실행
36
- bun run build:bun # bun 번들러로 빌드
37
- bun run src/index.ts # 소스 직접 실행
38
+ tylersong --help # 도움말 보기
39
+ tylersong --version # 버전 정보 확인
40
+ tylersong --github # GitHub 프로필 바로 열기
41
+ tylersong -g # GitHub 프로필 바로 열기 (단축)
42
+ ```
43
+
44
+ ## 🎨 스크린샷
45
+
46
+ ```
47
+ ╭───────────────────────────────────────────╮
48
+ │ 🚀 Frontend Developer Profile 🚀 │
49
+ ╰───────────────────────────────────────────╯
50
+
51
+ 👋 안녕하세요!
52
+ 💻 프론트엔드 개발자 송민성입니다.
53
+
54
+ 📌 Github: https://github.com/alstjd0051
55
+ ✉️ E-mail: wsc7202@gmail.com
56
+
57
+ 💡 더 많은 정보는 --help를 통해 확인해주세요.
38
58
  ```
39
59
 
40
- ## 버전 업데이트
60
+ ## 👨‍💻 개발자 정보
61
+
62
+ - **이름**: 송민성 (Tyler Song)
63
+ - **직업**: Frontend Developer
64
+ - **GitHub**: [@alstjd0051](https://github.com/alstjd0051)
65
+ - **Email**: wsc7202@gmail.com
66
+
67
+ ## 🛠️ 기술 스택
68
+
69
+ 이 CLI 도구는 다음 기술로 제작되었습니다:
70
+
71
+ - **TypeScript** - 타입 안전성
72
+ - **Node.js** - 크로스 플랫폼 실행
73
+ - **Commander.js** - CLI 인터페이스
74
+ - **Inquirer.js** - 대화형 프롬프트
75
+ - **Chalk** - 터미널 색상 및 스타일링
76
+
77
+ ## 📦 패키지 정보
78
+
79
+ - **크기**: 작고 가벼운 패키지 (~20KB)
80
+ - **의존성**: 최소한의 검증된 의존성만 사용
81
+ - **호환성**: Node.js 14+ 지원
82
+ - **플랫폼**: Windows, macOS, Linux 모두 지원
83
+
84
+ ## 🤝 피드백 및 연락
85
+
86
+ 버그 리포트나 기능 제안은 언제든 환영합니다!
87
+
88
+ - **GitHub Issues**: [npm_readMe/issues](https://github.com/alstjd0051/npm_readMe/issues)
89
+ - **Email**: wsc7202@gmail.com
90
+
91
+ ## 📄 라이센스
92
+
93
+ MIT License - 자유롭게 사용하세요!
41
94
 
42
- 1. 버전 업데이트: `npm version patch` (또는 minor/major)
43
- 2. 태그와 함께 GitHub에 푸시: `git push origin main --tags`
95
+ ---
44
96
 
45
- ## 라이센스
97
+ **Made with ❤️ by Tyler Song**
46
98
 
47
- MIT
99
+ <!-- Last updated: $(date) -->
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ const openUrl = (url) => {
11
11
  : "xdg-open";
12
12
  exec(`${command} ${url}`);
13
13
  };
14
- program.version("1.0.5").description("송민성의 개발자 프로필 CLI");
14
+ program.version("1.0.7");
15
15
  program.option("-g, --github", "GitHub 프로필 열기");
16
16
  program.parse(process.argv);
17
17
  const options = program.opts();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAUrC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAQ,EAAE;IACpC,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC1B,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAC/B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,UAAU,CAAC;IACjB,IAAI,CAAC,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;AAC5B,CAAC,CAAC;AAEF,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;AAEzD,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAEhD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,MAAM,OAAO,GAAmB,OAAO,CAAC,IAAI,EAAE,CAAC;AAE/C,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IACpC,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;IACrC,YAAY;IACZ,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC;;;;;;;;;;;KAWd,CAAC,CACD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,SAAS;IACT,MAAM,MAAM,GAAe,MAAM,QAAQ,CAAC,MAAM,CAAC;QAC/C;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACtC,OAAO,EAAE,IAAI;SACd;KACF,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;OAKf,CAAC;YACA,KAAK,CAAC,KAAK,CAAC;qBACC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;OAEtC,CAAC;YACA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,cAAc,KAAK,CAAC,SAAS,CAAC,WAAW,CAC5D,+BAA+B,CAChC;OACF,CAAC;YACA,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,SAAS,CAAC,WAAW,CACnD,mBAAmB,CACpB;OACF,CAAC;YACA,KAAK,CAAC,OAAO,CAAC;oBACF,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;OACjC,CAAC,CACH,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAUrC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAQ,EAAE;IACpC,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC1B,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAC/B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,UAAU,CAAC;IACjB,IAAI,CAAC,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;AAC5B,CAAC,CAAC;AAEF,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEzB,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAEhD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,MAAM,OAAO,GAAmB,OAAO,CAAC,IAAI,EAAE,CAAC;AAE/C,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IACpC,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;IACrC,YAAY;IACZ,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC;;;;;;;;;;;KAWd,CAAC,CACD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,SAAS;IACT,MAAM,MAAM,GAAe,MAAM,QAAQ,CAAC,MAAM,CAAC;QAC/C;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACtC,OAAO,EAAE,IAAI;SACd;KACF,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;OAKf,CAAC;YACA,KAAK,CAAC,KAAK,CAAC;qBACC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;OAEtC,CAAC;YACA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,cAAc,KAAK,CAAC,SAAS,CAAC,WAAW,CAC5D,+BAA+B,CAChC;OACF,CAAC;YACA,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,SAAS,CAAC,WAAW,CACnD,mBAAmB,CACpB;OACF,CAAC;YACA,KAAK,CAAC,OAAO,CAAC;oBACF,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;OACjC,CAAC,CACH,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,191 @@
1
+ # 자동 배포 시스템 가이드
2
+
3
+ ## 🎯 개요
4
+ 이 시스템은 main 브랜치에 PR이 merge될 때 자동으로 버전을 업데이트하고 NPM에 배포하는 완전 자동화된 배포 시스템입니다.
5
+
6
+ ## 🚀 작동 방식
7
+
8
+ ### 1. 자동 트리거
9
+ - **main 브랜치로의 PR merge**: CI 완료 후 자동 배포 시작
10
+ - **main 브랜치로의 직접 push**: 즉시 자동 배포 시작
11
+ - **태그 push**: 기존 태그 기반 배포 유지
12
+
13
+ ### 2. 자동 버전 결정 (Semantic Versioning)
14
+ 커밋 메시지를 분석하여 자동으로 버전 타입을 결정합니다:
15
+
16
+ #### 🔴 Major 버전 (X.0.0)
17
+ ```bash
18
+ # Breaking changes
19
+ git commit -m "feat!: completely new API structure"
20
+ git commit -m "fix!: remove deprecated method"
21
+ git commit -m "feat: add new feature
22
+
23
+ BREAKING CHANGE: This removes the old API"
24
+ ```
25
+
26
+ #### 🟡 Minor 버전 (0.X.0)
27
+ ```bash
28
+ # New features
29
+ git commit -m "feat: add user profile management"
30
+ git commit -m "feat(auth): implement OAuth login"
31
+ ```
32
+
33
+ #### 🟢 Patch 버전 (0.0.X)
34
+ ```bash
35
+ # Bug fixes, docs, chores (default)
36
+ git commit -m "fix: resolve login redirect issue"
37
+ git commit -m "docs: update README"
38
+ git commit -m "chore: update dependencies"
39
+ git commit -m "style: fix code formatting"
40
+ ```
41
+
42
+ ### 3. 자동 실행 과정
43
+ 1. **CI 실행**: 테스트, 빌드, 린팅
44
+ 2. **버전 분석**: 현재 버전 vs NPM 배포 버전 비교
45
+ 3. **자동 버전 업데이트**: 필요 시 package.json 및 소스코드 버전 업데이트
46
+ 4. **자동 커밋**: 버전 업데이트 커밋 생성 및 푸시
47
+ 5. **빌드 및 배포**: TypeScript 빌드 후 NPM 배포
48
+ 6. **알림**: Discord 및 콘솔 알림
49
+
50
+ ## 📋 사전 설정 요구사항
51
+
52
+ ### 1. GitHub Secrets 설정
53
+ ```bash
54
+ # NPM 토큰 설정 (필수)
55
+ NPM_TOKEN=your_npm_token_here
56
+
57
+ # Discord 알림 (선택사항)
58
+ DISCORD_WEBHOOK_URL=your_discord_webhook_url
59
+ ```
60
+
61
+ ### 2. NPM 토큰 생성 방법
62
+ 1. [npmjs.com](https://www.npmjs.com)에 로그인
63
+ 2. Profile → Access Tokens → Generate New Token
64
+ 3. **Automation** 타입 선택
65
+ 4. 생성된 토큰을 GitHub Repository Settings → Secrets에 `NPM_TOKEN`으로 추가
66
+
67
+ ## 🎨 Conventional Commits 가이드
68
+
69
+ ### 기본 형식
70
+ ```
71
+ <type>[optional scope]: <description>
72
+
73
+ [optional body]
74
+
75
+ [optional footer(s)]
76
+ ```
77
+
78
+ ### 주요 타입들
79
+ | 타입 | 설명 | 버전 영향 |
80
+ |------|------|-----------|
81
+ | `feat` | 새로운 기능 | Minor |
82
+ | `fix` | 버그 수정 | Patch |
83
+ | `docs` | 문서 변경 | Patch |
84
+ | `style` | 코드 스타일 변경 | Patch |
85
+ | `refactor` | 코드 리팩토링 | Patch |
86
+ | `test` | 테스트 추가/수정 | Patch |
87
+ | `chore` | 빌드/설정 변경 | Patch |
88
+ | `!` | Breaking Change | Major |
89
+
90
+ ### 실제 예시
91
+ ```bash
92
+ # 새 기능 추가 (Minor 버전 증가)
93
+ git commit -m "feat: add interactive CLI menu"
94
+
95
+ # 버그 수정 (Patch 버전 증가)
96
+ git commit -m "fix: resolve command parsing error"
97
+
98
+ # Breaking Change (Major 버전 증가)
99
+ git commit -m "feat!: redesign CLI interface"
100
+
101
+ # 상세한 설명이 있는 커밋
102
+ git commit -m "feat: add color themes
103
+
104
+ - Add dark and light theme options
105
+ - Implement theme persistence
106
+ - Update help text with theme info"
107
+ ```
108
+
109
+ ## 🔧 워크플로우 파일 구성
110
+
111
+ ### 주요 작업들
112
+ 1. **check-ci**: CI 상태 확인
113
+ 2. **auto-version**: 자동 버전 업데이트 및 결정
114
+ 3. **version-check**: 태그 기반 배포용 버전 확인
115
+ 4. **publish**: NPM 배포 실행
116
+ 5. **notify**: 결과 알림
117
+
118
+ ### 트리거 조건
119
+ ```yaml
120
+ on:
121
+ push:
122
+ branches: [main] # main 브랜치 직접 push
123
+ tags: ["v*"] # 태그 push
124
+ workflow_run:
125
+ workflows: ["Continuous Integration"]
126
+ types: [completed] # CI 완료 후
127
+ branches: [main]
128
+ ```
129
+
130
+ ## 📊 배포 시나리오
131
+
132
+ ### 시나리오 1: 첫 PR merge
133
+ ```
134
+ 현재 NPM: v1.0.5
135
+ 현재 코드: v1.0.5
136
+ → 자동으로 v1.0.6으로 업데이트 후 배포
137
+ ```
138
+
139
+ ### 시나리오 2: 이미 다른 버전인 경우
140
+ ```
141
+ 현재 NPM: v1.0.5
142
+ 현재 코드: v1.0.6
143
+ → 버전 업데이트 없이 v1.0.6 즉시 배포
144
+ ```
145
+
146
+ ### 시나리오 3: 태그 기반 배포
147
+ ```
148
+ 태그 push: v1.1.0
149
+ → 버전 체크만 하고 즉시 배포
150
+ ```
151
+
152
+ ## 🚨 주의사항
153
+
154
+ ### 1. 권한 설정
155
+ - GitHub Actions에 repository write 권한 필요
156
+ - NPM 토큰이 올바르게 설정되어야 함
157
+
158
+ ### 2. 커밋 메시지 규칙
159
+ - Conventional Commits 형식 권장
160
+ - 명확하고 일관된 메시지 작성
161
+
162
+ ### 3. CI/CD 최적화
163
+ - `[skip ci]` 태그로 무한 루프 방지
164
+ - 버전 업데이트 커밋은 자동으로 CI 건너뛰기
165
+
166
+ ## 🎉 장점
167
+
168
+ ### ✅ 완전 자동화
169
+ - 수동 버전 관리 불필요
170
+ - 실수 방지 및 일관성 보장
171
+
172
+ ### ✅ Semantic Versioning 준수
173
+ - 커밋 메시지 기반 자동 버전 결정
174
+ - 표준화된 버전 관리
175
+
176
+ ### ✅ 실시간 알림
177
+ - Discord 및 콘솔 배포 상태 알림
178
+ - 성공/실패 즉시 확인
179
+
180
+ ## 🔍 디버깅
181
+
182
+ ### 로그 확인 위치
183
+ - GitHub Actions → 해당 워크플로우 실행 → 각 작업 로그
184
+
185
+ ### 일반적인 문제들
186
+ 1. **NPM 토큰 오류**: Secrets 설정 확인
187
+ 2. **버전 충돌**: NPM에서 같은 버전 이미 배포됨
188
+ 3. **빌드 실패**: TypeScript 컴파일 오류 확인
189
+ 4. **권한 오류**: GitHub token 권한 확인
190
+
191
+ 이제 PR만 merge하면 자동으로 버전이 업데이트되고 NPM에 배포됩니다! 🚀
@@ -0,0 +1,116 @@
1
+ # NPM 직접 배포 가이드
2
+
3
+ ## 🎯 개요
4
+
5
+ 이 문서는 GitHub Actions 태그 자동화 없이 NPM에 직접 배포하는 방법을 설명합니다.
6
+
7
+ ## 📋 사전 준비사항
8
+
9
+ - NPM 계정 및 로그인
10
+ - TypeScript 프로젝트 빌드 환경
11
+ - 적절한 권한(패키지 소유자 또는 메인테이너)
12
+
13
+ ## 🚀 배포 단계
14
+
15
+ ### 1. 버전 업데이트
16
+
17
+ ```bash
18
+ # 패치 버전 자동 증가 (1.0.4 → 1.0.5)
19
+ npm version patch
20
+
21
+ # 또는 마이너 버전 증가 (1.0.4 → 1.1.0)
22
+ npm version minor
23
+
24
+ # 또는 메이저 버전 증가 (1.0.4 → 2.0.0)
25
+ npm version major
26
+ ```
27
+
28
+ ### 2. TypeScript 소스 코드 수정
29
+
30
+ 버전이 하드코딩된 경우 소스코드도 업데이트:
31
+
32
+ ```typescript
33
+ // src/index.ts
34
+ program.version("1.0.5").description("송민성의 개발자 프로필 CLI");
35
+ ```
36
+
37
+ ### 3. 프로젝트 빌드
38
+
39
+ ```bash
40
+ # TypeScript 컴파일
41
+ npm run build
42
+ ```
43
+
44
+ ### 4. NPM 로그인 확인
45
+
46
+ ```bash
47
+ # 현재 로그인 상태 확인
48
+ npm whoami
49
+
50
+ # 로그인되지 않은 경우 로그인
51
+ npm login
52
+ ```
53
+
54
+ ### 5. NPM 배포
55
+
56
+ ```bash
57
+ # 패키지 배포
58
+ npm publish
59
+ ```
60
+
61
+ ## ✅ 배포 성공 확인
62
+
63
+ ### 배포된 패키지 정보 확인
64
+
65
+ ```bash
66
+ # 최신 버전 정보 확인
67
+ npm view tylersong
68
+
69
+ # 모든 버전 목록 확인
70
+ npm view tylersong versions --json
71
+ ```
72
+
73
+ ### 패키지 설치 및 테스트
74
+
75
+ ```bash
76
+ # 전역 설치
77
+ npm install -g tylersong@latest
78
+
79
+ # 실행 테스트
80
+ tylersong
81
+ ```
82
+
83
+ ## 📦 배포 결과 (2024.08.04)
84
+
85
+ ### 성공적으로 배포된 버전: `1.0.5`
86
+
87
+ - **배포 시간**: 방금 전 (just now)
88
+ - **패키지 크기**: 21.0 kB
89
+ - **압축 해제 크기**: 58.1 kB
90
+ - **포함된 파일**: 19개
91
+ - **메인테이너**: miiinsseong <wsc7202@gmail.com>
92
+
93
+ ### 전체 버전 히스토리
94
+
95
+ ```json
96
+ ["1.0.0", "1.0.1", "1.0.3", "1.0.4", "1.0.5"]
97
+ ```
98
+
99
+ ## 🔧 주요 변경사항 (v1.0.5)
100
+
101
+ - ✨ JavaScript에서 TypeScript로 완전 변환
102
+ - 📦 타입 정의 파일 포함 (`dist/index.d.ts`)
103
+ - 🛠️ 자동 빌드 스크립트 (`prepublishOnly`)
104
+ - 📚 상세한 문서화 완료
105
+
106
+ ## 💡 팁
107
+
108
+ 1. **자동 빌드**: `prepublishOnly` 스크립트가 설정되어 있어 배포 시 자동으로 빌드됩니다.
109
+ 2. **타입 안전성**: TypeScript로 변환되어 더 안정적인 코드가 되었습니다.
110
+ 3. **버전 관리**: 소스코드의 하드코딩된 버전도 함께 업데이트해야 합니다.
111
+
112
+ ## 🚨 주의사항
113
+
114
+ - 같은 버전을 두 번 배포할 수 없습니다.
115
+ - 배포 전 반드시 빌드와 테스트를 수행하세요.
116
+ - NPM 로그인 상태를 확인하세요.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tylersong",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "나의 CLI 자기소개 도구",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
package/src/index.ts CHANGED
@@ -23,7 +23,7 @@ const openUrl = (url: string): void => {
23
23
  exec(`${command} ${url}`);
24
24
  };
25
25
 
26
- program.version("1.0.5").description("송민성의 개발자 프로필 CLI");
26
+ program.version("1.0.7");
27
27
 
28
28
  program.option("-g, --github", "GitHub 프로필 열기");
29
29