build-deploy-tools
Version:
构建部署工具包 - 支持文件复制、SVN操作、系统通知确认等功能
297 lines (225 loc) • 6.92 kB
Markdown
# 快速开始指南
## 🎯 项目概述
**Build Deploy Tools** 是一个功能强大的 Node.js 构建部署工具包,将您原有的两个JS脚本整合成了一个完整的npm插件。
### ✨ 核心功能
- 🔄 **智能重试机制** - 自动处理网络异常和临时错误
- 📢 **跨平台通知** - 支持 Windows、macOS、Linux 系统通知
- 🤖 **自动化支持** - 完美适配 CI/CD 环境
- 📁 **文件操作** - 高效的文件复制、删除等操作
- 🔗 **SVN集成** - 完整的 SVN 操作支持
- 🛠️ **命令行工具** - 便捷的 CLI 命令
## 🚀 立即使用
### 1. 安装依赖
```bash
cd /d/MyWeb/scripts
npm install
```
### 2. 测试功能
```bash
# 测试通知功能
node bin/test-notification.js
# 查看构建复制工具帮助
node bin/build-copy.js --help
```
### 3. 基本使用
```bash
# 交互模式(推荐首次使用)
node bin/build-copy.js
# 自动模式
node bin/build-copy.js --auto
# 自动模式 + 自动提交
node bin/build-copy.js --auto --commit
```
## 📦 发布为npm包
### 1. 修改package.json
```bash
# 编辑包名(必须唯一)
# 将 "name": "build-deploy-tools" 改为您的包名
# 例如: "name": "@yourname/build-deploy-tools"
```
### 2. 发布到npm
```bash
# 登录npm
npm login
# 发布包
npm publish
```
### 3. 全局安装使用
```bash
# 安装您发布的包
npm install -g @yourname/build-deploy-tools
# 直接使用命令
build-copy --help
test-notification --help
```
## 🔧 集成到现有项目
### 方式1: 本地使用
```bash
# 复制到您的项目
cp -r . /path/to/your/project/tools/
# 在项目中使用
node tools/bin/build-copy.js
```
### 方式2: 包依赖
```json
// package.json
{
"devDependencies": {
"@yourname/build-deploy-tools": "^1.0.0"
},
"scripts": {
"build": "vite build",
"deploy": "npm run build && build-copy --auto",
"deploy-commit": "npm run build && build-copy --auto --commit"
}
}
```
### 方式3: 编程使用
```javascript
const { BuildDeployTools } = require('@yourname/build-deploy-tools')
const tools = new BuildDeployTools()
async function deploy() {
await tools.executeBuildCopy({
sourceDir: './dist',
targetParentDir: 'D:/Work/Vue3/myproject',
fileName: 'myapp',
autoCommit: true
})
}
deploy()
```
## 📋 配置选项
### 环境变量配置
```bash
# .env 文件
CI=true # CI环境模式
npm_config_auto=true # 自动模式
npm_config_commit_cli=true # 自动提交
npm_config_notification=false # 禁用通知
npm_config_build=myapp # 构建文件名
```
### 命令行参数
```bash
build-copy --build=myapp --target=D:/Projects --auto --commit
```
## 🔍 与原脚本对比
| 功能 | 原脚本 | npm包版本 |
|------|--------|-----------|
| 文件复制 | ✅ | ✅ 增强重试 |
| SVN操作 | ✅ | ✅ 智能错误处理 |
| 系统通知 | ✅ | ✅ 跨平台兼容 |
| 命令行工具 | ❌ | ✅ 完整CLI |
| 编程接口 | ❌ | ✅ 模块化API |
| 错误处理 | 基础 | ✅ 智能重试 |
| 文档说明 | ❌ | ✅ 完整文档 |
| npm分发 | ❌ | ✅ 标准包 |
## 🎯 迁移指南
### 从原脚本迁移
1. **保留原脚本(备份)**
```bash
mv build-copy.js build-copy.js.backup
mv test-notification.js test-notification.js.backup
```
2. **使用新版本**
```bash
# 替代原来的使用方式
# 原: node scripts/build-copy.js
# 新: node bin/build-copy.js
# 或者安装后直接使用
# build-copy
```
3. **更新package.json脚本**
```json
{
"scripts": {
"build-copy": "node bin/build-copy.js",
"deploy": "npm run build && npm run build-copy -- --auto"
}
}
```
## 💡 使用技巧
### 1. CI/CD集成
```yaml
# GitHub Actions 示例
- name: Deploy
run: |
npm run build
npx @yourname/build-deploy-tools build-copy --auto --commit
env:
CI: true
```
### 2. 多环境配置
```javascript
// deploy.config.js
const configs = {
dev: {
targetParentDir: 'D:/Work/Vue3/dev',
autoCommit: false
},
prod: {
targetParentDir: 'D:/Work/Vue3/production',
autoCommit: true
}
}
module.exports = configs[process.env.NODE_ENV || 'dev']
```
### 3. 批量部署
```bash
# 批量部署多个项目
for project in project1 project2 project3; do
build-copy --build=$project --target=/path/to/$project --auto
done
```
## 🆘 常见问题
**Q: 如何禁用系统通知?**
A: 使用 `--no-notification` 参数或设置环境变量 `npm_config_notification=false`
**Q: SVN操作失败怎么办?**
A: 确保目标目录是SVN工作副本,检查网络连接和权限
**Q: 如何自定义重试次数?**
A: 编程方式使用时可以在构造函数中配置 `maxRetries` 参数
**Q: 支持Git吗?**
A: 当前版本专注于SVN,Git支持在计划中
## 🎯 重要提醒:脚本执行控制
⚠️ **v1.2.1 重要特性** - 插件现在具备智能脚本检测,**仅在特定npm脚本中执行**:
### 执行条件
- 脚本名包含 `build-copy`:如 `npm run build:copy`
- 脚本名包含 `deploy`:如 `npm run deploy`
- 脚本命令包含 `build-copy`:如 `vue-cli-service build && build-copy`
### 推荐的package.json配置
```json
{
"scripts": {
"serve": "vue-cli-service serve", // ❌ 跳过插件
"build": "vue-cli-service build", // ❌ 跳过插件
"deploy": "npm run build && build-copy --auto", // ✅ 执行插件
"deploy-commit": "npm run build && build-copy --auto --commit" // ✅ 执行插件
}
}
```
### 在vue.config.js中启用检测
```javascript
// 脚本检测函数
function shouldExecuteDeployPlugin() {
const scriptName = process.env.npm_lifecycle_event || ''
return scriptName.includes('build-copy') || scriptName.includes('deploy')
}
module.exports = {
configureWebpack: {
plugins: [
// 只在生产环境且特定脚本中执行
process.env.NODE_ENV === 'production' && shouldExecuteDeployPlugin()
? /* 部署插件配置 */ : null
].filter(Boolean)
}
}
```
🔍 **这样确保插件只在您真正需要部署时才运行,避免在开发中意外触发!**
详细配置请参考:[integration-examples.md](integration-examples.md)
## 📞 获取帮助
- 查看详细文档:`README.md`
- 查看API文档:`INSTALL.md`
- 查看集成示例:`integration-examples.md`
- 命令行帮助:`build-copy --help`
- 测试功能:`test-notification --help`
---
🎉 **恭喜!您已经成功将原有的JS脚本转换为一个专业的npm包!**