Skip to main content
ClaudeWave
Slash Command47 repo starsupdated 1mo ago

service

开发服务管理(自动检测运行时、启动/停止/重启服务)

Install in Claude Code
Copy
mkdir -p ~/.claude/commands && curl -fsSL https://raw.githubusercontent.com/xiaobei930/cc-best/HEAD/commands/service.md -o ~/.claude/commands/service.md
Then start a new Claude Code session; the slash command loads automatically.

service.md

# /service - 开发服务管理

自动检测项目运行时和包管理器,管理开发服务的启动、停止和重启。**支持 6 种语言运行时的自动检测。**

## 使用方式

```bash
# 自动检测并启动服务
/cc-best:service

# 停止运行中的服务
/cc-best:service --stop

# 重启服务
/cc-best:service --restart

# 查看服务日志
/cc-best:service --logs

# 指定端口启动
/cc-best:service --port 3000

# 列出检测到的所有服务入口
/cc-best:service --list
```

---

## 运行时自动检测

### 检测优先级

按以下顺序检测项目运行时:

| 优先级 | 检测文件                              | 运行时  | 包管理器          |
| ------ | ------------------------------------- | ------- | ----------------- |
| 1      | `package.json`                        | Node.js | npm/pnpm/yarn/bun |
| 2      | `pyproject.toml` / `requirements.txt` | Python  | poetry/pdm/pip    |
| 3      | `go.mod`                              | Go      | go                |
| 4      | `Cargo.toml`                          | Rust    | cargo             |
| 5      | `build.gradle` / `pom.xml`            | Java    | gradle/maven      |
| 6      | `*.csproj` / `*.sln`                  | C#      | dotnet            |

### 包管理器检测(Node.js)

| 检测文件            | 包管理器 | 启动命令      |
| ------------------- | -------- | ------------- |
| `bun.lockb`         | bun      | `bun run dev` |
| `pnpm-lock.yaml`    | pnpm     | `pnpm dev`    |
| `yarn.lock`         | yarn     | `yarn dev`    |
| `package-lock.json` | npm      | `npm run dev` |

### 启动命令映射

#### Node.js

```bash
# 检查 package.json scripts
# 优先级: dev > start > serve
<PM> run dev          # 存在 "dev" script 时
<PM> run start        # 存在 "start" script 时
```

#### Python

```bash
# 检测框架
uvicorn main:app --reload        # FastAPI (检测 uvicorn 依赖)
flask run --reload               # Flask (检测 flask 依赖)
python manage.py runserver       # Django (检测 manage.py)
python -m gunicorn app:app       # Gunicorn (生产环境)
```

#### Go

```bash
# 检测 air 配置
air                              # 存在 .air.toml 时 (hot reload)
go run .                         # 默认
go run cmd/server/main.go        # 存在 cmd/ 目录时
```

#### Rust

```bash
cargo watch -x run               # 安装了 cargo-watch 时 (hot reload)
cargo run                        # 默认
```

#### Java

```bash
./gradlew bootRun                # Spring Boot + Gradle
mvn spring-boot:run              # Spring Boot + Maven
./gradlew run                    # 普通 Gradle 项目
```

#### C#

```bash
dotnet watch run                 # 开发模式 (hot reload)
dotnet run                       # 默认
```

---

## 多服务项目

当检测到多个服务入口时(如前后端分离项目):

1. 使用 `--list` 列出所有检测到的服务
2. 自动为每个服务分配不同端口
3. 使用后台运行模式启动多个服务

```bash
# 示例输出
# 检测到 2 个服务:
# [1] frontend (Node.js/pnpm) → pnpm dev --port 3000
# [2] backend  (Python/poetry) → poetry run uvicorn main:app --port 8000
```

---

## 注意事项

1. **后台运行**: 服务使用 `run_in_background` 方式启动,不阻塞会话
2. **端口冲突**: 自动检测端口占用,冲突时递增端口号
3. **环境变量**: 自动加载 `.env` 文件(如存在)
4. **Windows 兼容**: 所有命令均兼容 Windows/macOS/Linux
5. **不依赖 PM2**: 使用原生命令启动,不引入额外依赖

> **记住**: 服务管理的关键是生命周期——启动、监控、停止要形成闭环,避免僵尸进程和端口泄露。