express-hale
Version:
🚀 Interactive Express.js scaffold CLI with comprehensive error handling, TypeScript/JavaScript, database integrations, Git Flow, and development tools
206 lines (156 loc) • 5.11 kB
Markdown
# Express Hale CLI
🚀 交互式 Express.js 脚手架 CLI,支持 TypeScript/JavaScript、数据库集成、全面的错误处理和开发工具。
## ✨ 特性
- **语言支持**: 支持 TypeScript 或 JavaScript
- **数据库集成**: 支持 MySQL、MongoDB、Redis 数据库,预配置连接
- **开发工具**: 集成 ESLint、Prettier 和自动格式化
- **测试框架**: 支持 Jest 或 Mocha 测试框架
- **包管理器支持**: 支持 pnpm、npm 或 yarn
- **Docker 支持**: 可选择生成 Dockerfile 和 docker-compose.yml
- **Git 集成**: 自动初始化 git 仓库
- **Git Flow**: 配置 Git Flow 工作流 (需要 git-flow 工具)
- **🛡️ 错误边界**: 全面的错误处理和兜底机制
- **📊 错误监控**: 内置错误监控和上报系统
- **🔄 优雅关闭**: 支持优雅关闭和资源清理
## 安装
```bash
pnpm add -g express-hale
# 或者
npx express-hale my-app
# 或者
pnpm create express-app my-app
```
## 使用方法
### 交互式模式
```bash
express-hale my-express-app
```
### 快速开始
```bash
pnpm create express-app my-app
cd my-app
pnpm install
pnpm run dev
```
## CLI 选项
CLI 提供以下交互式配置选项:
- **项目名称**: Express 应用程序的名称
- **编程语言**: TypeScript 或 JavaScript
- **数据库**: 多选数据库 (MySQL、MongoDB、Redis)
- **包管理器**: pnpm、npm 或 yarn
- **代码质量**: ESLint 和 Prettier 配置
- **测试框架**: Jest 或 Mocha 配置
- **Docker**: 可选容器化文件
- **Git**: 初始化 git 仓库
- **Git Flow**: 配置 Git Flow 工作流 (需要 git-flow 工具)
## 生成的项目结构
```
my-express-app/
├── src/
│ ├── config/ # 数据库配置文件
│ ├── controllers/ # 路由控制器
│ ├── middleware/ # 自定义中间件
│ ├── models/ # 数据库模型
│ ├── routes/ # API 路由
│ ├── services/ # 业务逻辑
│ ├── utils/ # 工具函数
│ └── index.ts # 应用程序入口文件
├── tests/ # 测试文件
├── .env # 环境变量
├── .env.example # 环境变量模板
├── .gitignore # Git 忽略规则
├── .eslintrc.js # ESLint 配置
├── .prettierrc # Prettier 配置
├── jest.config.js # Jest 配置
├── tsconfig.json # TypeScript 配置
├── Dockerfile # Docker 配置 (可选)
├── docker-compose.yml # Docker Compose (可选)
├── GIT_FLOW.md # Git Flow 工作流文档 (可选)
└── package.json # 包配置文件
```
## 数据库配置
### MySQL
```javascript
// 使用环境变量自动生成连接配置
const pool = mysql.createPool({
host: process.env.MYSQL_HOST,
port: process.env.MYSQL_PORT,
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE,
});
```
### MongoDB
```javascript
// 带重连逻辑的 Mongoose 连接
mongoose.connect(process.env.MONGODB_URI);
```
### Redis
```javascript
// 带连接处理的 Redis 客户端
const client = createClient({
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT,
password: process.env.REDIS_PASSWORD,
});
```
## 可用脚本
- `pnpm run dev` - 启动开发服务器,支持热重载
- `pnpm run build` - 构建 TypeScript 到 JavaScript (TS 项目)
- `pnpm start` - 启动生产服务器
- `pnpm test` - 运行测试套件
- `pnpm run lint` - 使用 ESLint 检查代码
- `pnpm run format` - 使用 Prettier 格式化代码
### Git Flow 脚本 (如果启用)
- `pnpm run git:feature` - 开始新功能分支
- `pnpm run git:feature-finish` - 完成功能分支
- `pnpm run git:release` - 开始发布分支
- `pnpm run git:release-finish` - 完成发布分支
- `pnpm run git:hotfix` - 开始热修复分支
- `pnpm run git:hotfix-finish` - 完成热修复分支
## 环境变量
生成的 `.env` 文件包含:
```bash
# 服务器配置
PORT=3000
NODE_ENV=development
# 数据库配置 (如果选择了相应数据库)
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database
MONGODB_URI=mongodb://localhost:27017/your_database
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password
# JWT 密钥
JWT_SECRET=your_jwt_secret_key
```
## Git Flow 工作流
如果选择了 Git Flow 选项,项目将包含 Git Flow 配置和相关脚本。
### 安装 Git Flow
**macOS:**
```bash
brew install git-flow-avh
```
**Ubuntu/Debian:**
```bash
sudo apt-get install git-flow
```
**Windows:**
```bash
# 使用 Git for Windows 或通过包管理器安装
```
### 使用说明
生成的项目会包含 `GIT_FLOW.md` 文件,详细说明了工作流程和命令使用方法。
## 开发
参与 Express Hale CLI 开发:
```bash
git clone https://github.com/your-username/express-hale.git
cd express-hale
pnpm install
pnpm run dev
```
## 许可证
MIT © [Gaowenhan](https://github.com/gaowenhan)