# @dllcnx/auto-deploy

> 自动部署脚本

Latest version **2.1.1** (published 2023-04-10) · ISC license · 0 weekly downloads

## Install

```sh
npm install @dllcnx/auto-deploy
pnpm add @dllcnx/auto-deploy
yarn add @dllcnx/auto-deploy
bun add @dllcnx/auto-deploy
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.1.1 |
| Published | 2023-04-10 |
| First published | 2023-01-17 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 12 |
| Unpacked size | 240.5 KB |
| Known vulnerabilities | 0 (+3 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 2 |
| Author | DLLCNX |
| Maintainers | jukaifeng |

## Links

- npm: https://www.npmjs.com/package/@dllcnx/auto-deploy
- Repository: https://github.com/KeiferJu/auto-deploy
- Homepage: https://github.com/KeiferJu/auto-deploy#readme
- Issues: https://github.com/KeiferJu/auto-deploy/issues
- npm.io page: https://npm.io/package/@dllcnx/auto-deploy

## Dependencies (12)

- [ora](https://npm.io/package/ora.md) ^4.0.4
- [read](https://npm.io/package/read.md) ^1.0.7
- [chalk](https://npm.io/package/chalk.md) ^4.0.0
- [upath](https://npm.io/package/upath.md) ^2.0.1
- [shelljs](https://npm.io/package/shelljs.md) ^0.8.4
- [bluebird](https://npm.io/package/bluebird.md) ^3.7.2
- [inquirer](https://npm.io/package/inquirer.md) ^7.1.0
- [node-ssh](https://npm.io/package/node-ssh.md) ^10.0.2
- [minimatch](https://npm.io/package/minimatch.md) 5.0.1
- [compressing2](https://npm.io/package/compressing2.md) ^1.5.1
- [ssh2-sftp-client](https://npm.io/package/ssh2-sftp-client.md) ^7.2.1
- [@dllcnx/promise-ftp](https://npm.io/package/@dllcnx/promise-ftp.md) ^1.3.6

## Recent versions

- 2.1.1 (latest) — 2023-04-10
- 2.1.0 — 2023-04-07
- 2.0.7 — 2023-02-22
- 2.0.5 — 2023-02-21
- 2.0.4 — 2023-01-17
- 2.0.3 — 2023-01-17
- 2.0.2 — 2023-01-17
- 2.0.1 — 2023-01-17

## README

### 使用方法:

原项目[@dllcn/auto-deploy](https://www.npmjs.com/package/@dllcn/auto-deploy)的升级版，原账号因为邮箱的问题无法接着迭代发布。

1. 下载项目
```
npm install @dllcnx/auto-deploy -D
```

2. 在`package.json`的`scripts`添加执行命令
```
    "deploy": "node ./node_modules/@dllcnx/auto-deploy"
```

3. 在项目根目录创建`deploy.config.js`文件,可配置多个发布服务，例如以下配置了三个:
   
  ```javascript
  // 配置示例,具体配置看配置
  module.exports = Object.freeze({
      ftp: {//ftp配置
          NAME: "ftp发布",
          SERVER_HOST: 'xxx', // 服务器地址
          USER: 'root', // 用户名
          PASSWORD: 'xxx', //密码,需加密,加密页面参考下面链接
          REMOTE_ROOT: '/web/test/', // 需要上传的服务器目录地址 如 /usr/local/nginx/html
          LOCAL_PATH: "dist", // 需要上传文件夹路径,默认dist
          PORT: 5521,
          TYPE: "ftp",  // ftp,sftp,ssh 模认ssh
          FTP_CONFIG:{
              DELETE_REMOTE: true,
              ...
          }
      },
      sftp: {//ftp配置
          NAME: "sftp发布",
          SERVER_HOST: 'xxx', // 服务器地址
          USER: 'root', // 用户名
          PASSWORD: 'xxx', //密码,需加密,加密页面参考下面链接
          REMOTE_ROOT: '/web/test/', // 需要上传的服务器目录地址 如 /usr/local/nginx/html
          LOCAL_PATH: "dist", // 需要上传文件夹路径,默认dist
          PORT: 5521,
          TYPE: "ftp",  // ftp,sftp,ssh 模认ssh
          FTP_CONFIG:{
              DELETE_REMOTE: true,
              ...
          }
      },
      ssh: {//ssh
          NAME: "sftp发布",
          SERVER_HOST: 'xxx',
          USER: 'root',
          //方式一 用秘钥登录服务器(推荐), private 本机私钥文件地址(需要在服务器用户目录 一般是 /root/.ssh/authorized_keys 配置公钥 并该文件权限为 600, (.ssh文件夹一般默认隐藏)
          // PRIVATE_KEY: 'C:/Users/Html5/.ssh/id_rsa',
        	//方式二，密码
          PASSWORD: 'xxx',//密码,需加密,加密页面参考下面链接
          REMOTE_ROOT: '/var/local/llcn', // 需要上传的服务器目录地址 如 /usr/local/nginx/html
          LOCAL_PATH: 'dist/',  // 需要上传文件夹路径,默认dist
          PORT: 22,
          SSH_CONFIG: {
              BACKUP: true,
              ...
          }
      }
  })
  ```



4. 执行`npm run deploy`发布命令

![image-20230117231310216](https://dllcnx.com:18889/images/2023/01/202301172313308.png)

### 配置

#### 基础配置
- **name**:  配置名称，默认采用key值
- **SERVER_HOST**:  服务器地址
- **USER**: 服务器用户名
- **PASSWORD**: 密码
- **PRIVATE_KEY**: **[ssh推荐授权配置,与PASSWORD选用一样即可]**,用秘钥登录服务器(推荐)的秘钥地址, private 本机私钥文件地址(需要在服务器用户目录 一般是 `/root/.ssh/authorized_keys` 配置公钥 并该文件权限为 600, (.ssh文件夹一般默认隐藏)
- **LOCAL_PATH**: 需要上传文件夹路径,默认dist
- **REMOTE_ROOT**: 服务器路径
- **PORT**: 端口
- **LOADINGSTYLE**: **[非必须]**,进度动画,默认为 `arrow4` 加载动画 有 `dots` 至 `dots12` 如 `dots6`,`line` ,`pipe` ,`star`, `arrow` 至 `arrow4` 等等
- **TYPE**:**[非必须]**,上传方式，默认`ssh`，还可选择`ftp`，`sftp`
- **SSH_CONFIG**: **[非必须]**，ssh模式下的扩展配置
- **FTP_CONFIG**:**[非必须]**，ftp和sftp模式下的扩展配置



#### SSH_CONFIG

- **SSH_CONFIG.BACKUP**: 是否备份,默认false
- **SSH_CONFIG.DELETE_LOCAL_PACKAGE**: 成功后是否删除本地压缩包,默认false
- **SSH_CONFIG.BUILD_SHELL**: 是否启动自动上传前编译,如果启用,填入编译命令
- **SSH_CONFIG.EXTENDS**: 任务结束后,有时有的操作需要其他命令支持,可以使用扩展,填入自己要用的命令数组.例如:['cd demo', 'rm -rf *']



#### FTP_CONFIG

- **FTP_CONFIG.DELETE_REMOTE**: 如果为真，则在上传前删除目标上的所有现有文件
- **FTP_CONFIG.INCLUDE**: 默认["\*", "\*\\*\*"], 将上传除`.`开头文件以外的所有文件
- **FTP_CONFIG.EXCLUDE**: 模认排除sourcemaps和node_modules中的所有文件(包括`.`开头文件)
- **FTP_CONFIG.FORCEPASY**: 强制被动模式(未发送EPSV命令)



### 加密页面

[在线加密页面](https://dllcnx.com:18999/deploy/index.html)或者直接访问项目根目录单页面，加密目前只是简单混淆，防止密码明文直接暴漏到配置文件，但是会查看源码依旧存在暴漏风险，所以建议ssh的key模式授权登录。

---
_Source: https://npm.io/package/@dllcnx/auto-deploy · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
