npm package: @junyoungkr/auto-commit-pr
Description: 변경된 파일 기준 [타입] : 메시지 형식 커밋 메시지 제안 및 PR 생성
Latest version: 1.1.2

# @junyoungkr/auto-commit-pr

변경된 파일을 기준으로 `[타입] : 메시지` 형식의 커밋 메시지를 제안하고, 선택 시 PR까지 생성해 주는 CLI 도구입니다.

---

## 한국어

### 설치

원하는 패키지 매니저로 전역 설치:

```bash
# npm
npm install -g @junyoungkr/auto-commit-pr

# yarn
yarn global add @junyoungkr/auto-commit-pr

# pnpm
pnpm add -g @junyoungkr/auto-commit-pr

# bun
bun install -g @junyoungkr/auto-commit-pr
```

설치 없이 한 번만 실행할 때 (npm / yarn / pnpm / bun 모두 사용 가능):

```bash
npx @junyoungkr/auto-commit-pr
npx @junyoungkr/auto-commit-pr --pr
# 또는: yarn dlx / pnpm dlx / bunx
yarn dlx @junyoungkr/auto-commit-pr --pr
pnpm dlx @junyoungkr/auto-commit-pr --pr
bunx @junyoungkr/auto-commit-pr --pr
```

### 사용법

| 명령 | 설명 |
|------|------|
| `auto-commit-pr` | 커밋 메시지 제안 후 커밋 (기본 브랜치에 있으면 push까지) |
| `auto-commit-pr --pr` / `-p` | 커밋 후 현재 브랜치 push + **base 브랜치 대상 PR 생성** |
| `auto-commit-pr --reset-base` / `-r` | 이 프로젝트에 저장된 기본 브랜치를 지우고 다음 실행 시 다시 물어봄 |

### 기본 브랜치 (pull/push/PR base)

- **최초 1회**: 실행 시 `pull/push 할 기본 브랜치를 입력하세요 (기본값: dev):` 라고 물어봅니다. `main`, `dev`, `develop` 등 원하는 브랜치를 입력하면 **해당 프로젝트 폴더에만** 저장됩니다.
- **저장 위치**: Git 저장소면 `git config --local commitHelper.baseBranch`에, Git이 아니면 프로젝트 루트의 `.commit-helper.json`에 저장됩니다.
- **다른 프로젝트**: 폴더가 다르면 각각 최초 1회 입력 후 그 프로젝트에만 적용됩니다.
- **재설정**: `--reset-base`(또는 `-r`)를 붙이면 저장된 값을 지우고, 다음 실행 시 다시 브랜치를 물어봅니다.

### 커밋 타입

| 번호 | 타입 | 설명 |
|------|------|------|
| 1 | feat | 새 기능 |
| 2 | modify | 수정 (QA, 개선 등) |
| 3 | fix | 버그 수정 |
| 4 | docs | 문서만 변경 |
| 5 | style | 포맷/스타일만 변경 |
| 6 | refactor | 리팩터링 |
| 7 | chore | 빌드/설정/기타 |

### PR 생성 (--pr)

- **GitHub CLI(`gh`)가 필요합니다.** [설치 및 로그인](https://cli.github.com/) 후 사용하세요.
- `--pr` 사용 시: base 브랜치에서 pull → 커밋 → 현재 브랜치 push → `gh pr create --base <저장된 기본 브랜치>` 로 PR 생성됩니다.

### 추천 사용 흐름

1. **기능 브랜치에서 작업** → `auto-commit-pr --pr` 로 커밋 + PR 한 번에 생성
2. **기본 브랜치(dev/main 등)에서 작은 수정** → `auto-commit-pr` 만 실행하면 커밋 + push까지 진행
3. **저장된 기본 브랜치를 바꾸고 싶을 때** → `auto-commit-pr --reset-base` 실행 후 다음부터 새 브랜치 입력

---

## English

### Install

Install globally with your preferred package manager:

```bash
# npm
npm install -g @junyoungkr/auto-commit-pr

# yarn
yarn global add @junyoungkr/auto-commit-pr

# pnpm
pnpm add -g @junyoungkr/auto-commit-pr

# bun
bun install -g @junyoungkr/auto-commit-pr
```

Or run once without installing (works with npm / yarn / pnpm / bun):

```bash
npx @junyoungkr/auto-commit-pr
npx @junyoungkr/auto-commit-pr --pr
# or: yarn dlx / pnpm dlx / bunx
yarn dlx @junyoungkr/auto-commit-pr --pr
pnpm dlx @junyoungkr/auto-commit-pr --pr
bunx @junyoungkr/auto-commit-pr --pr
```

### Usage

| Command | Description |
|---------|-------------|
| `auto-commit-pr` | Suggests a commit message, then runs commit (and push if on the base branch) |
| `auto-commit-pr --pr` / `-p` | Commit, push current branch, then create a PR against the **saved base branch** |
| `auto-commit-pr --reset-base` / `-r` | Clear the saved base branch for this project; you will be prompted again on next run |

### Base branch (pull / push / PR base)

- **First run only**: You will be asked: `pull/push 할 기본 브랜치를 입력하세요 (기본값: dev):`. Enter your default branch (e.g. `main`, `dev`, `develop`). It is stored **only for that project folder**.
- **Where it’s stored**: In a Git repo, `git config --local commitHelper.baseBranch`; otherwise, `.commit-helper.json` in the project root.
- **Other projects**: Each project folder has its own setting; you’ll be prompted once per project.
- **Reset**: Use `--reset-base` (or `-r`) to clear the saved branch; you’ll be prompted again on the next run.

### Commit types

| # | Type | Description |
|---|------|-------------|
| 1 | feat | New feature |
| 2 | modify | Modification (QA, improvement, etc.) |
| 3 | fix | Bug fix |
| 4 | docs | Documentation only |
| 5 | style | Formatting/style only |
| 6 | refactor | Refactoring |
| 7 | chore | Build/config/other |

### PR creation (--pr)

- **Requires GitHub CLI (`gh`).** [Install and log in](https://cli.github.com/) first.
- With `--pr`: pull from base branch → commit → push current branch → `gh pr create --base <saved base branch>`.

### Recommended workflow

1. **On a feature branch**: run `auto-commit-pr --pr` to commit and open a PR in one go.
2. **On the base branch (e.g. main/dev)**: run `auto-commit-pr` to commit and push.
3. **To change the saved base branch**: run `auto-commit-pr --reset-base`, then enter the new branch on the next run.

---

## License

MIT