build-deploy-tools
Version:
构建部署工具包 - 支持文件复制、SVN操作、系统通知确认等功能
264 lines (196 loc) • 5.8 kB
Markdown
# 安装和使用指南
## 🚀 快速开始
### 1. 安装依赖
```bash
npm install
```
### 2. 全局安装(可选)
```bash
npm install -g .
```
### 3. 基本测试
```bash
# 测试通知功能
npm run test
# 或者直接运行
node bin/test-notification.js
```
## 📦 发布到 npm
### 1. 准备发布
```bash
# 检查包内容
npm pack --dry-run
# 查看会发布的文件
npm publish --dry-run
```
### 2. 发布包
```bash
# 登录 npm(如果未登录)
npm login
# 发布包
npm publish
```
### 3. 版本管理
```bash
# 更新补丁版本
npm version patch
# 更新次版本
npm version minor
# 更新主版本
npm version major
```
## 🛠️ 开发指南
### 项目结构
```
build-deploy-tools/
├── package.json # 包配置文件
├── index.js # 主入口文件
├── README.md # 项目说明
├── CHANGELOG.md # 更新日志
├── LICENSE # 许可证
├── .gitignore # Git忽略文件
├── .npmignore # npm忽略文件
├── bin/ # 命令行工具
│ ├── build-copy.js # 构建复制工具
│ └── test-notification.js # 通知测试工具
├── lib/ # 核心库
│ ├── utils.js # 通用工具函数
│ ├── notification.js # 通知模块
│ ├── file-operations.js # 文件操作模块
│ └── svn-operations.js # SVN操作模块
└── example.config.js # 配置示例
```
### 本地测试
```bash
# 在项目根目录链接到全局
npm link
# 测试命令行工具
build-copy --help
test-notification --help
# 取消链接
npm unlink -g build-deploy-tools
```
### 代码规范
项目使用 JavaScript Standard Style:
```bash
# 安装代码检查工具
npm install -g standard
# 检查代码风格
standard
# 自动修复
standard --fix
```
## 🔧 配置说明
### 环境变量
| 变量名 | 说明 | 示例 |
|--------|------|------|
| `CI` | CI环境自动启用自动模式 | `CI=true` |
| `npm_config_auto` | 启用自动模式 | `npm_config_auto=true` |
| `npm_config_commit_cli` | 启用自动提交 | `npm_config_commit_cli=true` |
| `npm_config_notification` | 启用/禁用通知 | `npm_config_notification=false` |
| `npm_config_build` | 指定构建文件名 | `npm_config_build=myapp` |
### package.json 脚本
```json
{
"scripts": {
"build": "your-build-command",
"build-copy": "build-copy",
"deploy": "npm run build && build-copy --auto --commit",
"test-notification": "test-notification"
}
}
```
## 🐛 故障排除
### 常见问题
1. **权限错误**
```bash
sudo chown -R $USER:$USER .
chmod +x bin/*.js
```
2. **SVN 相关错误**
- 确保目标目录是 SVN 工作副本
- 检查 SVN 权限和网络连接
3. **通知不显示**
- 使用 `--no-notification` 参数回退到命令行模式
- 检查系统通知权限设置
### 调试模式
```bash
# 启用调试输出
DEBUG=build-deploy-tools build-copy
# 查看详细日志
node bin/build-copy.js --help
```
## 📚 API 参考
### 编程使用
```javascript
const { BuildDeployTools } = require('build-deploy-tools')
const tools = new BuildDeployTools({
maxRetries: 3,
retryDelay: 2000
})
await tools.executeBuildCopy({
sourceDir: './dist',
targetParentDir: '/path/to/deployment',
autoCommit: true
})
```
## 🎯 脚本执行控制(重要)
从 v1.2.1 版本开始,插件具备智能脚本检测功能,**只在特定的npm脚本中执行**,避免在开发过程中意外触发部署。
### 执行规则
插件仅在以下情况下执行:
- npm脚本名称包含 `build-copy`
- npm脚本名称包含 `deploy`
- npm脚本命令包含 `build-copy`
### 配置示例
在 `vue.config.js` 中添加脚本检测:
```javascript
const { BuildDeployTools } = require('build-deploy-tools')
// 检查是否应该执行部署插件
function shouldExecuteDeployPlugin() {
const scriptName = process.env.npm_lifecycle_event || ''
const scriptCommand = process.env.npm_lifecycle_script || ''
console.log(`🔍 当前npm脚本: ${scriptName}`)
// 满足任一条件即执行
const shouldExecute = scriptName.includes('build-copy') ||
scriptCommand.includes('build-copy') ||
scriptName.includes('deploy')
console.log(`🔍 是否执行部署插件: ${shouldExecute}`)
return shouldExecute
}
module.exports = {
configureWebpack: {
plugins: [
// 只在特定脚本中执行
process.env.NODE_ENV === 'production' && shouldExecuteDeployPlugin()
? {
apply: compiler => {
compiler.hooks.done.tapAsync('BuildDeployPlugin', async (stats, callback) => {
// 部署逻辑...
})
}
}
: null,
].filter(Boolean)
}
}
```
### scripts配置建议
```json
{
"scripts": {
"serve": "vue-cli-service serve", // ❌ 不执行插件
"build": "vue-cli-service build", // ❌ 不执行插件
"deploy": "npm run build && build-copy", // ✅ 执行插件
"deploy-auto": "npm run build && build-copy --auto" // ✅ 执行插件
}
}
```
详细说明请参考 [integration-examples.md](integration-examples.md)
## 🤝 贡献指南
1. Fork 项目
2. 创建特性分支
3. 提交更改
4. 推送到分支
5. 创建 Pull Request
## 📄 许可证
MIT License - 查看 [LICENSE](LICENSE) 文件了解详情。