# auto-deploy
**Repository Path**: xz2xl/auto-deploy
## Basic Information
- **Project Name**: auto-deploy
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-06-11
- **Last Updated**: 2021-06-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## @xz2xl/auto-deploy
前端一键自动化部署工具,支持开发、测试、生产多环境配置,支持单环境部署和多环境同时部署。配置好后即可一键自动完成打包、部署。
国内文档: [gitee](https://gitee.com/xz2xl/auto-deploy)
> 推荐:
> node >= 12.1.0
### 安装
全局安装(推荐)
``` bash
npm install -g @xz2xl/auto-deploy
```
本地安装
``` bash
npm install @xz2xl/auto-deploy --save-dev
```
> 注意:采用本地安装方法的话一下所有命令前面要加上 `npx`, 例如: npx @xz2xl/auto-deploy --version
查看版本
``` bash
@xz2xl/auto-deploy --version
# @xz2xl/auto-deploy -v
```
### 使用
以下以全局安装且在项目根目录下为例
1、 初始化项目
``` bash
@xz2xl/auto-deploy init
# 或者使用简写 @xz2xl/auto-deploy i
```
2、 手动创建或修改配置文件
不使用上面的初始化命令的也可以手动创建配置文件。在项目根目录下手动创建 `deploy.config.js` 文件,复制以下代码按情况修改即可。
> 注意:server中的各环境配置换成自己的配置
``` javascript
module.exports = {
'projectName': 'vue-antd-admin', // 项目名称
'privateKey': '', // 本地私钥地址。 Mac默认:/Users/[用户名]/.ssh/id_rsa
'passphrase': '', // 本地私钥密码,没有则不填,默认为空
'server': { // 部署服务器配置
'dev': { // 开发环境
'name': '开发环境', // 服务器配置名称
'script': 'npm run build:dev', // 打包命令
'host': '192.168.1.3', // 服务器地址
'port': 22, // 服务器端口号
'username': 'xiaozhou', // 服务器登录名
'password': '', // 服务器登录明码,
'distPath': 'dist', // 打包后文件路径,默认:dist
'webDir': '/Users/xiaozhou/web', // 服务器部署路径,不可为空或者'/'
'bakDir': '/Users/xiaozhou/back', // 服务器文件备份路径
'isRemoveRemoteFile': true, // 是否删除远程文件,默认:true
'isRemoveLocalFile': true // 是否删除本地打包文件,默认:true
},
'test': { // 测试环境
'name': '测试环境', // 服务器配置名称
'script': 'npm run build:test', // 打包命令
'host': '192.168.1.3', // 服务器地址
'port': 22, // 服务器端口号
'username': 'xiaozhou', // 服务器登录名
'password': '', // 服务器登录明码,
'distPath': 'dist', // 打包后文件路径,默认:dist
'webDir': '/Users/xiaozhou/web', // 服务器部署路径,不可为空或者'/'
'bakDir': '/Users/xiaozhou/back', // 服务器文件备份路径
'isRemoveRemoteFile': true, // 是否删除远程文件,默认:true
'isRemoveLocalFile': true // 是否删除本地打包文件,默认:true
},
'prod': { // 生产环境
'name': '生产环境', // 服务器配置名称
'script': 'npm run build:prod', // 打包命令
'host': '192.168.1.3', // 服务器地址
'port': 22, // 服务器端口号
'username': 'xiaozhou', // 服务器登录名
'password': '', // 服务器登录明码,
'distPath': 'dist', // 打包后文件路径,默认:dist
'webDir': '/Users/xiaozhou/web', // 服务器部署路径,不可为空或者'/'
'bakDir': '/Users/xiaozhou/back', // 服务器文件备份路径
'isRemoveRemoteFile': true, // 是否删除远程文件,默认:true
'isRemoveLocalFile': true // 是否删除本地打包文件,默认:true
}
}
}
```
3、 部署
- 单环境部署 `--mode 环境对象`
``` bash
@xz2xl/auto-deploy deploy --mode dev
# OR
@xz2xl/auto-deploy deploy --mode test
# OR
@xz2xl/auto-deploy deploy --mode prod
```
- 多环境部署,发布到 `deploy.config.js` 文件中的 `server` 字段下定义的所有环境中
``` bash
@xz2xl/auto-deploy deploy
# OR
@xz2xl/auto-deploy d
```
输入 Y 或按下 Enter 键确认后即可开始自动部署。
> 注:可以在命令后添加 `--no-build` 跳过本地打包过程
### 本地安装扩展
运行 `@xz2xl/auto-deploy init` 后将会自动添加对应的代码到项目根目录下的 `package.json` 文件中 `scripts` 脚本中
``` json
"scripts": {
// ...
"deploy": "@xz2xl/auto-deploy deploy",
"deploy:dev": "@xz2xl/auto-deploy deploy --mode dev",
"deploy:test": "@xz2xl/auto-deploy deploy --mode test",
"deploy:prod": "@xz2xl/auto-deploy deploy --mode prod"
}
```
然后使用下面代码也可以完成部署操作
``` bash
npm run deploy:dev
# OR
npm run deploy:test
# OR
npm run deploy:prod
```
### 自定义环境
本项目仅内置 `dev`、`test`、`prod` 三种环境,若想添加自定义环境配置,在 `deploy.config.js` 文件中的 `server` 字段下按以下格式添加代码,同时在 `package.json` 文件中 `scripts` 脚本中添加 `"deploy:customEnv": "@xz2xl/auto-deploy deploy --mode customEnv"` 即可。
例如:
``` javascript
module.exports = {
// ...
'server': { // 部署服务器配置
// ...
'customEnv': { // 自定义环境
'name': '自定义环境', // 服务器配置名称
'script': 'customEnv 打包命令', // 打包命令
'host': '192.168.1.3', // 服务器地址
'port': 22, // 服务器端口号
'username': 'xiaozhou', // 服务器登录名
'password': '', // 服务器登录明码,
'distPath': 'dist', // 打包后文件路径,默认:dist
'webDir': '/Users/xiaozhou/web', // 服务器部署路径,不可为空或者'/'
'bakDir': '/Users/xiaozhou/back', // 服务器文件备份路径
'isRemoveRemoteFile': true, // 是否删除远程文件,默认:true
'isRemoveLocalFile': true // 是否删除本地打包文件,默认:true
}
}
}
```
### 安全性
1、 服务器的密码放上去是否不太安全?
> 密码可以不填,再把 `privateKey` 字段值修改成 '',部署的时候会提示让你输入密码