# pgy-deploy **Repository Path**: hcnj/deploy ## Basic Information - **Project Name**: pgy-deploy - **Description**: 实现项目自动发布到服务器 - **Primary Language**: NodeJS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-02-23 - **Last Updated**: 2026-08-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # pgy-deploy 使用 SSH2 与 SCP2 实现的自动化代码部署工具。 ## 设计理念 - 简化打包后提交到服务器的繁琐操作 - 前置与后置命令用于解决项目文件发布后需要执行部分命令的需求 - 安全确认机制,防止误操作 ## 环境 Node.js >= 12 ## 安装 ```bash # npm npm i pgy-deploy -g # yarn yarn global add pgy-deploy ``` ## 快速开始 ```bash # 1. 初始化配置文件 pgy-deploy init # 2. 编辑 deploy.json 配置 # 3. 执行部署 pgy-deploy -i test ``` ## 配置文件 默认配置文件:`deploy.json`(UTF-8) 配置文件默认在执行命令的当前目录下,支持自定义路径和名称。 ```json { "test": { "serverName": "测试服务器", "loginWay": 0, "host": "192.168.1.100", "port": 22, "username": "root", "password": "your_password", "privateKeyPath": "", "localPath": "./dist", "serverPath": "/var/www/html", "connectTimeout": 30000, "cmdTimeout": 60000, "preCmd": "cd /var/www && mkdir -p backup", "rearCmd": [ "cd /var/www/html", "npm install --production", "pm2 restart app" ] }, "prod": { "serverName": "生产服务器", "loginWay": 1, "host": "10.0.0.100", "port": 22, "username": "deploy", "password": "", "privateKeyPath": "~/.ssh/id_rsa", "localPath": "./dist", "serverPath": "/var/www/html", "connectTimeout": 30000, "cmdTimeout": 120000, "preCmd": "cd /var/www && mkdir -p backup", "rearCmd": [ "cd /var/www/html", "npm install --production", "pm2 restart app" ] } } ``` ### 配置项说明 | 字段 | 必填 | 说明 | |------|------|------| | serverName | 否 | 服务器简称,方便管理 | | loginWay | 是 | 登录方式:0-密码,1-证书 | | host | 是 | 服务器 IP 地址 | | port | 是 | 端口号 | | username | 是 | 登录用户名 | | password | 条件 | 登录密码(loginWay=0 时必填) | | privateKeyPath | 条件 | 证书路径(loginWay=1 时必填),支持 `~` 展开 | | localPath | 是 | 本地文件路径 | | serverPath | 是 | 服务器文件路径 | | connectTimeout | 否 | SSH 连接超时(毫秒),默认 30000 | | cmdTimeout | 否 | 命令执行超时(毫秒),默认 60000 | | preCmd | 否 | 前置命令,支持字符串或数组 | | rearCmd | 否 | 后置命令,支持字符串或数组 | ## 命令 ### 执行部署 ```bash pgy-deploy -i ``` 示例: ```bash # 部署到测试环境 pgy-deploy -i test # 部署到生产环境 pgy-deploy -i prod # Dry Run 模式(预览操作,不实际执行) pgy-deploy -i prod --dry-run ``` ### 查看配置 ```bash # 查看当前配置文件信息 pgy-deploy -config # 查看指定配置项 pgy-deploy -config prod ``` ### 修改配置文件路径 ```bash # 设置自定义配置文件 pgy-deploy -d myconfig.json # 设置相对路径 pgy-deploy -d ../config/deploy.json # 设置绝对路径 pgy-deploy -d C:/Users/my/Desktop/deploy.json # 重置为默认配置文件 pgy-deploy -d ``` ### 初始化配置 ```bash # 在当前目录创建 deploy.json(基于模板) pgy-deploy init ``` ### 查看版本 ```bash pgy-deploy -v ``` ### 显示帮助 ```bash pgy-deploy ? ``` ## 安全特性 - **部署前确认**:显示部署信息,需要用户输入 `y` 确认 - **Dry Run 模式**:使用 `--dry-run` 预览将执行的操作 - **敏感信息保护**:`.gitignore` 已配置忽略配置文件 ## 错误处理 - SSH 连接超时:默认 30 秒,可配置 - 命令执行超时:默认 60 秒,可配置 - 优雅退出:错误时自动清理资源 ## License ISC