UNPKG

wukong-deploy

Version:

A simple CLI to manage multi-server deployment

317 lines (232 loc) 7.45 kB
## 📦 `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 ``` ![演示](./images/demo.svg) --- ## 🖥 支持系统 - 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,发布到服务器, 多服务器管理 -->