##  介绍

由于官方的HBuilderX编译器打包wgt每次都要手动的操作有些繁琐，也不支持多环境打包，在开发阶段与原生项目交互调试是极其不方便。
而`uni-packing-wgt`正好可以解决这些问题。

`uni-packing-wgt`是uniapp跨平台多环境资源打包、调试、发布的脚本工具。


主要特性：

- 支持同时构建多个环境资源(dev、beta、release)包，也包括了wgt包。
- 支持上传发布到七牛云平台，其他云平台暂不支持，支持七牛文件CDN缓存刷新。
- 在构建资源包时也可以同步内置到原生项目上，方便在开发阶段与原生间的交互调试。
- 支持版本号自增，如果在原生项目上内置资源包调试，此时可用上，因为内置资源包调试版本号必须增加才会生效。

> 工具仅限于vite cli创建的项目使用，不支持HBuilderX创建的项目。

## 安装使用

安装：

```bash
npm i uni-packing-wgt
```

1、在`package.json`中配置uniapp的打包命令，如下：

```json
"build:app-plus-dev": "uni build -p app-plus --mode development --outDir=./dist/dev/app",
"build:app-plus-beta": "uni build -p app-plus --mode beta --outDir=./dist/beta/app",
"build:app-plus-release": "uni build -p app-plus --mode production --outDir=./dist/release/app"
```

其中`development`、`beta`、`production`是vite多环境配置的文件名，vite必须遵守这种命名规范，不然脚本会执行失败。

2、执行`build-wgt`命令行生成dist资源和uni wgt包，从1.2.0版本可以携带环境参数执行，之前config.json的runDev、runBeta、runRelease字段已弃用。

- -d：dev环境，不带参数，默认是dev环境
- -b：beta环境
- -r：release环境

```bazaar
build-wgt -d
```

> 如果是在vscode和命令终端上运行命令，记得加上`npx`,即`npx build-wgt`, WebStorm则不用。

在初次执行命令时，会在项目根目录创建三个配置文件，可根据需求自由配置：

- config.json：常规配置，比如运行环境、版本、文件拷贝、上传等管理
- config-output.json：配置文件拷贝的输入、输出目录，用于uni模块在dev环境与原生资源同步调试
- config-release.json：发布环境的配置，比如cdn缓存、后台配置同步的管理

> config-output.json和config-release.json文件记得在`.gitignore`配置忽略不用提交，每个开发者的参数是不一样的。

**config.json**

```json
{
  "runDev": true, // 指定打包的环境
  "runBeta": false,
  "runRelease": false,
  "refreshUrl": true, // 是否刷新七牛cdn缓存 
  "isIncrementVersion": true, // 版本是否自增
  "uploadWgtPackage": false, // wgt包是否上传到云平台上，需要结合upload参数使用
  "pkgCopyToNativeDir": false, // 是否将资源包同步到原生项目上，需要在config-output.json配置路径
  "upload": {  // 七牛配置参数
    "devAccessKey": "",
    "devSecretKey": "",
    "devBucket": "",
    "devDomainName": "",
    "devDir": "app"
  }

}
```

生成环境的七牛参数需要在`config-release.json#upload`配置，如果是外部使用，其他参数无须配置。

在打包资源同步到原生项目中调试，需要在`config-output.json`文件中配置原生项目的目标目录。以Android为例：

> 同步到原生项目中调试，需要版本自增才会生效，把`isIncrementVersion`设置`true`即可。

```json
{
  "sourceDir": "./dist/dev/app",
  "targetDir": "替换成项目路径/app/src/main/assets/apps/替换成uniAppId/www"
}
```
- sourceDir: 是uniapp的资源包的相对路径，默认是`./dist/dev/app`；
- targetDir: 原生项目的路径，建议放绝对路径。


以dev环境为例，控制台输出结果：

``` bash
hzwei@HZWeis-Mac-mini uni-mall-staff % build-wgt

======开始生成资源包=====
======资源包生成完成=====
======资源包开始压缩=====
{ status: 'fulfilled', value: './dist/dev/__UNI__xxxx60.wgt' }
======资源包压缩任务完成=====
======资源包开始复制=====
{
  hash: 'Fop4lZ8NADlAsThMVWIiTjoTh_JT',
  key: 'app/dev/__UNI__xxxx60.wgt'
}
前往刷新url:  https://xxxx.com/app/dev/__UNI__xxxx60.wgt
======资源包上传完成=====

```











