# @cjs-front-end/quickupdate

> ## 简介

Latest version **0.0.21** (published 2023-03-31) · 0 weekly downloads

## Install

```sh
npm install @cjs-front-end/quickupdate
pnpm add @cjs-front-end/quickupdate
yarn add @cjs-front-end/quickupdate
bun add @cjs-front-end/quickupdate
```

Provides the commands `qub`, `qubOpen`, `qubConfig`.

## Health

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

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.21 |
| Published | 2023-03-31 |
| First published | 2023-03-06 |
| Weekly downloads | 0 |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 3 |
| Unpacked size | 18.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | energytime |

## Links

- npm: https://www.npmjs.com/package/@cjs-front-end/quickupdate
- npm.io page: https://npm.io/package/@cjs-front-end/quickupdate

## Dependencies (3)

- [archiver](https://npm.io/package/archiver.md) ^5.3.1
- [inquirer](https://npm.io/package/inquirer.md) ^8.2.4
- [node-ssh](https://npm.io/package/node-ssh.md) ^13.0.1

## Recent versions

- 0.0.21 (latest) — 2023-03-31
- 0.0.20 — 2023-03-31
- 0.0.19 — 2023-03-31
- 0.0.18 — 2023-03-31
- 0.0.17 — 2023-03-31
- 0.0.16 — 2023-03-31
- 0.0.15 — 2023-03-30
- 0.0.14 — 2023-03-30
- 0.0.13 — 2023-03-30
- 0.0.12 — 2023-03-30
- 0.0.11 — 2023-03-24
- 0.0.10 — 2023-03-24
- 0.0.9 — 2023-03-23
- 0.0.8 — 2023-03-23
- 0.0.7 — 2023-03-22
- … 7 more at https://npm.io/package/@cjs-front-end/quickupdate/versions

## README

# 轻量级更新脚本

## 简介

 通过简单的配置，就可以一行命令将当前项目打包到服务端完成前端项目的更新，适用于个人项目

 避免本地打包，再 🔗ssh 等后面一系列的繁琐操作，大幅提高更新效率

## 使用教程

1. **全局安装依赖**

```bash
npm i quickupdate -g
```

2. **通过“qupConfig”在本机上，根据提示配置上传信息**

```js
/**
 * 更新配置
 */
{
"name":"测试后台3", // 当前所有更新项目的名称
"buildPath":"/dist", // 你的项目打包路径例如 /dist
"buildRunPath": '', // 你运行打包命令的地址
"buildCmd":"npm run build", //  打包命令
"host":"0.0.0.0", // 填写服务器地址
"port":"22", // 端口号
"username":"root", // 服务器用户名
"password": "123456", // 服务器密码
"uploadDir":"/www/wwwroot/http",  // 在服务器的文件存放路径，例如填写的
"fileName":"admin",// 更新项目到服务器的文件名称
"backupName":"back_admin"// 更新项目到服务器的备份文件名称
}
```

3. **开始第一次命令更新**

> 假设你的项目在服务器中的路径为 /usr/share/nginx/admin，配置文件 uploadDir 填写为/usr/share/nginx，则更新命令为

```bash
qup
```

之后将会出现询问

```
您正在将代码更新到服务器,回车将会继续执行
```

按回车即可，之后变回执行打包 发送到服务器的脚本，结束后将会看到

```
总共 x.xx MB,完成源代码压缩
程序zip上传成功,判断线上是否需要备份
当前无需备份,直接解压上传压缩包
项目包完成解压,admin项目部署成功了!
项目更新时长12.663s
本地缓存zip清除完毕
线上项目.DS_Store删除完成
```

如果看到这个就恭喜您更新成功了，完成了一行命令将本地代码打包到服务器

### 注意！

- 不要忘记将写入敏感信息的文件`update.config.js`加入`.gitignore`，否则你的敏感信息将会被上传到代码库中！！

- 如果发现上传到服务端的 zip 文件没有没解压，请前往服务器中测试 unzip 命令是否存在（输入 unzip 然后回车），如果提示`unzip: command not found`，就执行命令进行安装`yum install -y unzip zip`。

## 高阶操作

### 限制更新名称

> 命令中最后附带的更新名称将会被传回你的配置函数，所以可以在函数中可以进行逻辑校验

```js
let whiteList = ['dist']
/**
 * 更新配置
 * @param {String} objName 当前更新名称
 * @returns
 */
module.exports = (objName) => {
  if (!whiteList.includes(objName)) {
    console.log('当前项目不存在您输入的更新命令,请检查更新名称')
    process.exit(0)
  }
  return {
    // ....
  }
}
```

### 多环境部署

> 假设您的前端项目存在多个环境 你希望可以通过命令备份正式环境代码，其他环境忽略，这可以启用参数 backObject

```js
let whiteList = ['dist', 'dist-pre']
/**
 * 更新配置
 * @param {String} objName 当前更新名称
 * @returns
 */
module.exports = (objName) => {
  if (!whiteList.includes(objName)) {
    console.log('当前项目不存在您输入的更新命令,请检查更新名称')
    process.exit(0)
  }
  return {
    // ....
    backObject: 'dist',
  }
}
```

祝你开发愉快！

---
_Source: https://npm.io/package/@cjs-front-end/quickupdate · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
