build-deploy-tools
Version:
构建部署工具包 - 支持文件复制、SVN操作、系统通知确认等功能,具有科技感进度条和现代化UI
274 lines (226 loc) • 8.05 kB
Markdown
# 🎯 智能提交信息功能示例
## ✨ 功能概述
**Build Deploy Tools v1.3.0** 新增了智能提交信息功能,能够自动从Git或SVN仓库获取最近一次提交信息,作为部署时的提交信息。
### 🔧 智能提取优先级
1. **自定义信息** - 手动指定的提交信息(最高优先级)
2. **Git最近提交** - 当前目录为Git仓库时,获取最近一次提交信息
3. **SVN最近提交** - 当前目录为SVN工作目录时,获取最近一次提交信息
4. **默认信息** - 使用默认的"更新构建文件"
## 🚀 使用示例
### 1. 命令行使用
#### 基本使用(自动获取提交信息)
```bash
# 自动从当前Git/SVN仓库获取最近提交信息
build-copy --auto --commit
# 示例输出:
# 📝 从Git获取提交信息: "修复用户登录验证问题"
# ✅ SVN提交成功,提交信息: 修复用户登录验证问题
```
#### 自定义提交信息
```bash
# 使用自定义提交信息
build-copy --message="部署版本v2.1.0到生产环境" --commit
# 或者使用完整参数名
build-copy --commit-message="修复购物车计算错误" --auto --commit
```
#### 禁用版本控制历史
```bash
# 不使用Git/SVN历史,仅使用默认信息
build-copy --no-vcs-history --commit
# 配合自定义信息
build-copy --no-vcs-history --message="紧急修复" --commit
```
$$
#### 格式化选项
```bash
# 添加时间戳
build-copy --add-timestamp --commit
# 提交信息: "修复登录问题 [2024-01-15 14:30]"
# 添加前缀和后缀
build-copy --prefix="[生产]" --suffix="[自动部署]" --commit
# 提交信息: "[生产] 修复登录问题 [自动部署]"
# 组合使用
build-copy --prefix="🚀" --add-timestamp --message="版本发布" --commit
# 提交信息: "🚀 版本发布 [2024-01-15 14:30]"
```
### 2. 编程方式使用
#### 基本编程接口
```javascript
const { BuildDeployTools } = require('build-deploy-tools')
const tools = new BuildDeployTools()
// 使用智能提交信息
await tools.executeBuildCopy({
sourceDir: './dist',
targetParentDir: 'D:/Work/Vue3/development',
autoCommit: true,
// 🆕 新参数
useVcsHistory: true, // 启用版本控制历史(默认)
commitMessage: null, // 不指定自定义信息,使用智能获取
commitOptions: {
addTimestamp: true,
prefix: '[自动部署]'
}
})
```
#### 自定义提交信息
```javascript
await tools.executeBuildCopy({
sourceDir: './dist',
targetParentDir: 'D:/Work/Vue3/development',
autoCommit: true,
commitMessage: '修复关键安全漏洞',
commitOptions: {
addTimestamp: true,
prefix: '🔒'
}
})
```
#### 仅使用默认信息
```javascript
await tools.executeBuildCopy({
sourceDir: './dist',
targetParentDir: 'D:/Work/Vue3/development',
autoCommit: true,
useVcsHistory: false // 禁用版本控制历史
})
```
### 3. Vue.js 项目集成
#### vue.config.js 配置
```javascript
const { BuildDeployTools } = require('build-deploy-tools')
function shouldExecuteDeployPlugin() {
const scriptName = process.env.npm_lifecycle_event || ''
return scriptName.includes('deploy')
}
module.exports = {
configureWebpack: {
plugins: [
process.env.NODE_ENV === 'production' && shouldExecuteDeployPlugin() && {
apply: compiler => {
compiler.hooks.done.tapAsync('BuildDeployPlugin', async (stats, callback) => {
try {
if (stats.hasErrors()) {
callback()
return
}
const tools = new BuildDeployTools()
await tools.executeBuildCopy({
sourceDir: './dist',
targetParentDir: 'D:/Work/Vue3/development',
autoCommit: true,
// 🆕 智能提交信息配置
useVcsHistory: true,
commitOptions: {
prefix: '[Vue构建]',
addTimestamp: true
}
})
callback()
} catch (error) {
callback(error)
}
})
},
},
].filter(Boolean),
},
}
```
#### package.json 脚本
```json
{
"scripts": {
"build": "vue-cli-service build",
"deploy": "npm run build && build-copy --auto --commit --prefix='[Vue]'",
"deploy:prod": "npm run build && build-copy --auto --commit --message='生产环境发布' --add-timestamp",
"deploy:hotfix": "npm run build && build-copy --auto --commit --prefix='🔥[紧急修复]'"
}
}
```
## 📋 实际使用场景
### 场景1:开发团队协作
```bash
# 开发者A提交代码
git commit -m "添加用户头像上传功能"
# 开发者B部署时自动使用这个提交信息
build-copy --auto --commit
# 🎯 自动提交信息:添加用户头像上传功能
```
### 场景2:版本发布
```bash
# 发布标签
git tag v2.1.0
git commit -m "发布版本v2.1.0 - 新增多语言支持"
# 部署时自动获取版本信息
build-copy --auto --commit --prefix="🚀[发布]" --add-timestamp
# 🎯 提交信息:🚀[发布] 发布版本v2.1.0 - 新增多语言支持 [2024-01-15 14:30]
```
### 场景3:紧急修复
```bash
# 紧急修复,覆盖自动获取的信息
build-copy --message="紧急修复支付接口问题" --prefix="🔥" --commit --add-timestamp
# 🎯 提交信息:🔥 紧急修复支付接口问题 [2024-01-15 16:45]
```
### 场景4:CI/CD 环境
```yaml
# GitHub Actions
- name: Deploy to SVN
run: |
npm run build
npx build-deploy-tools build-copy --auto --commit --prefix="[CI]" --add-timestamp
env:
CI: true
```
## 🔍 版本控制检测
工具会自动检测当前目录的版本控制系统:
### Git 项目
```bash
# 检测到 .git 目录,自动获取 Git 提交信息
git log -1 --pretty=format:"%s"
# 输出:优化数据库查询性能
build-copy --auto --commit
# 📝 从Git获取提交信息: "优化数据库查询性能"
```
### SVN 项目
```bash
# 检测到 SVN 工作目录,自动获取 SVN 提交信息
svn log -l 1
# 输出:修复文件上传组件的兼容性问题
build-copy --auto --commit
# 📝 从SVN获取提交信息: "修复文件上传组件的兼容性问题"
```
### 非版本控制项目
```bash
# 未检测到版本控制系统,使用默认信息
build-copy --auto --commit
# 📝 未找到版本控制历史信息,使用默认提交信息: "更新构建文件"
```
## ⚙️ 配置参数说明
### 命令行参数
| 参数 | 说明 | 示例 |
|------|------|------|
| `--message=<信息>` | 自定义提交信息 | `--message="修复登录bug"` |
| `--commit-message=<信息>` | 自定义提交信息(别名) | `--commit-message="版本发布"` |
| `--no-vcs-history` | 禁用版本控制历史 | `--no-vcs-history` |
| `--add-timestamp` | 添加时间戳 | `--add-timestamp` |
| `--prefix=<前缀>` | 添加前缀 | `--prefix="[部署]"` |
| `--suffix=<后缀>` | 添加后缀 | `--suffix="[完成]"` |
### 编程接口参数
```javascript
{
commitMessage: string, // 自定义提交信息
useVcsHistory: boolean, // 是否使用版本控制历史
commitOptions: {
prefix: string, // 前缀
suffix: string, // 后缀
addTimestamp: boolean // 是否添加时间戳
}
}
```
## 🎉 优势特性
1. **🤖 智能化** - 自动识别版本控制系统并提取提交信息
2. **🔗 保持一致性** - 部署信息与源代码提交信息保持一致
3. **⚡ 高效率** - 减少手动输入,提高部署效率
4. **🎨 可定制** - 支持前缀、后缀、时间戳等格式化选项
5. **🛡️ 向下兼容** - 完全兼容原有功能,新功能为可选
通过这个智能提交信息功能,您的部署流程将更加自动化和规范化!🚀