wukong-deploy
Version:
A simple CLI to manage multi-server deployment
317 lines (232 loc) • 7.45 kB
Markdown
## 📦 `wukong-deploy`
<p align="center">
<img src="https://raw.githubusercontent.com/tomatobybike/wukong-deploy/main/images/logo.svg" width="200" alt="wukong-dev Logo" />
</p>
<p align="center">
<a href="https://www.npmjs.com/package/wukong-deploy"><img src="https://img.shields.io/npm/v/wukong-deploy.svg" alt="npm 版本"></a>
<a href="https://www.npmjs.com/package/wukong-deploy"><img src="https://img.shields.io/npm/dm/wukong-deploy.svg" alt="下载量"></a>
<a href="https://github.com/tomatobybike/wukong-deploy/blob/master/LICENSE"><img src="https://img.shields.io/github/license/tomatobybike/wukong-deploy.svg" alt="许可证"></a>
<a href="https://github.com/tomatobybike/wukong-deploy"><img src="https://img.shields.io/github/stars/tomatobybike/wukong-deploy.svg?style=social" alt="GitHub 星标数"></a>
<a href="https://github.com/tomatobybike/wukong-deploy/issues"><img src="https://img.shields.io/github/issues/tomatobybike/wukong-deploy.svg" alt="问题数量"></a>
</p>
> ⚡️ 基于 Node.js 的轻量级部署 CLI,支持一键执行远程服务器命令队列。
中文 | [English](./README.md)
## 📚 目录
- [📦 `wukong-deploy`](#-wukong-deploy)
- [📚 目录](#-目录)
- [✨ 特性](#-特性)
- [🧱 安装要求](#-安装要求)
- [📦 安装](#-安装)
- [🚀 使用方法](#-使用方法)
- [命令行命令](#命令行命令)
- [⚙️ 配置](#️-配置)
- [`config/config.mjs`](#configconfigmjs)
- [➕ 添加多台服务器](#-添加多台服务器)
- [🌱 环境变量](#-环境变量)
- [示例 `.env`](#示例-env)
- [📷 演示](#-演示)
- [🖥 支持系统](#-支持系统)
- [📦 升级](#-升级)
- [🌏 多语言支持](#-多语言支持)
- [📜 更新日志](#-更新日志)
- [🐛 常见问题](#-常见问题)
- [📄 许可证](#-许可证)
- [🔍 关键词](#-关键词)
## ✨ 特性
- 🚀 一条命令即可远程部署服务器
- 🔐 支持安全 SSH 和 SCP
- 📁 自定义文件或文件夹
- 📦 通过 `config.mjs` 和 `.env` 轻松配置
- 🌍 多语言支持:英文 / 简体中文
- 🧪 强化 stderr 错误匹配
## 🧱 安装要求
- Node.js >= 18.0.0
- Linux / macOS(推荐)
- Windows
## 📦 安装
```bash
npm install -g wukong-deploy
# 或者
yarn global add wukong-deploy
```
## 🚀 使用方法
### 命令行命令
```bash
wukong-deploy init # 生成 .env 和 config/config.mjs
wukong-deploy deploy # 交互式部署
wukong-deploy deploy dev # 部署指定服务器配置
```
可临时设置环境变量:
```bash
WUKONG_LANG=en WUKONG_DEBUG=1 wukong-deploy deploy
```
## ⚙️ 配置
### `config/config.mjs`
```js
export default {
showCommandLog: true,
servers: {
dev: {
name: '开发服务器',
host: '192.168.0.123',
username: 'root',
passwordEnv: 'SERVER_DEV_PASSWORD',
commands: [
{
cmd: 'git pull',
cwd: '/your/project',
description: '更新代码',
exitOnStdErr: false,
errorMatch: /Permission denied/
},
{
cmd: 'npm run build',
cwd: '/your/project',
description: '构建项目',
exitOnStdErr: false,
errorMatch: /Permission denied/
}
],
finishMsg: '🎉 部署完成'
}
}
}
```
## ➕ 添加多台服务器
要支持更多环境,只需在 `servers` 字段中添加新的配置项:
```js
export default {
servers: {
dev: {
/* ... */
},
staging: {
name: '预发布服务器',
host: '123.45.67.89',
username: 'deploy',
passwordEnv: 'SERVER_STAGING_PASSWORD',
commands: [
{
cmd: 'npm run build',
cwd: '/srv/app',
description: '构建应用',
exitOnStdErr: false,
errorMatch: /Permission denied/
}
],
finishMsg: '🚀 预发布部署完成'
},
prod: {
/* ... */
}
}
}
```
然后,在 `.env` 文件里定义每个服务器的密码或其他秘密:
```env
SERVER_DEV_PASSWORD=your_dev_password
SERVER_STAGING_PASSWORD=your_staging_password
SERVER_PROD_PASSWORD=your_prod_password
```
部署到指定服务器:
```bash
wukong-deploy deploy staging
```
## 🌱 环境变量
你可以在 `.env` 中定义,也可以在 `.bashrc` / `.zshrc` 中导出:
| 变量名 | 说明 | 示例 |
| ----------------- | ------------------------ | ---- |
| `WUKONG_DEV_MODE` | 启用详细/开发模式 | `1` |
| `WUKONG_LANG` | CLI 语言(`zh` 或 `en`) | `zh` |
| `WUKONG_NO_EMOJI` | 禁用 emoji 输出 | `1` |
| `WUKONG_DEBUG` | 启用内部调试日志 | `1` |
💡 `WUKONG_NO_EMOJI`:某些 Windows 终端(如旧版 CMD)对 emoji 支持不好,建议设为 `1` 禁用。
### 示例 `.env`
```env
WUKONG_DEV_MODE=1
WUKONG_LANG=zh
WUKONG_NO_EMOJI=1
WUKONG_DEBUG=1
# 服务器登录密码
SERVER_DEV_PASSWORD=your_password
SERVER_STAGING_PASSWORD=your_password
```
## 📷 演示
```bash
wukong-deploy deploy
```

## 🖥 支持系统
- macOS
- Linux
- Windows(推荐使用 Windows Terminal 或 Git Bash,避免 CMD 编码和 emoji 显示问题)
## 📦 升级
```bash
npm update -g wukong-deploy
# 或者
yarn global upgrade wukong-deploy
```
## 🌏 多语言支持
根据你的终端系统语言自动切换中英文,无需额外配置。
| 语言环境变量 | 语言 |
| ------------------ | ---- |
| `LANG=zh_CN.UTF-8` | 中文 |
| `LANG=en_US.UTF-8` | 英文 |
你也可以通过命令参数强制指定语言:
```bash
wukong-deploy --lang=zh # 强制中文
wukong-deploy --lang=en # Force English
```
或者在 `.env` 中配置:
```bash
wukong-deploy --lang=zh # 强制中文
wukong-deploy --lang=en # Force English
```
## 📜 更新日志
详见 [CHANGELOG.md](./CHANGELOG.md)
## 🐛 常见问题
- **Windows 终端乱码**:建议使用支持 UTF-8 的终端,如 Windows Terminal
- **无 emoji 显示**:设置 `WUKONG_NO_EMOJI=1`
- **服务器登录失败**:
- 请确认`.env`中的密码和`config/config.mjs`的username是否正确
- **❌ PowerShell 报错:无法加载文件 `wukong-deploy.ps1`(执行策略限制)**:
- 原因:PowerShell 默认禁止执行 .ps1 脚本。通过 npm install -g 安装时会自动创建 .ps1 启动脚本,而 yarn global add 仅生成 .cmd 文件,因此不会触发该限制。
- 解决方法一(仅影响当前用户):
```powershell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
```
- 解决方法二(绕过):
删除全局目录中的 `wukong-deploy.ps1` 文件,PowerShell 将自动改用 `.cmd` 执行。
全局目录一般在:
```bash
C:\Users\<用户名>\AppData\Roaming\npm\
```
- 解决方法三:或使用 Node.js 直接运行 CLI:
```bash
node "$(npm root -g)/wukong-deploy/bin/cli.js"
```
- 解决方法四(推荐):改用 yarn 全局安装(不会生成 .ps1 文件):
```bash
npm uninstall wukong-deploy -g
yarn global add wukong-deploy
```
## 📄 许可证
[MIT](./LICENSE)
## 🔍 关键词
<!-- 部署工具,自动部署,前端发布,Node.js 上线工具,wukong-deploy,发布到服务器, 多服务器管理 -->