# `@quick-game/cli`

> 为开发者提供的联盟快游戏命令行工具

安装 [@quick-game/cli](https://www.npmjs.com/package/@quick-game/cli) 后，便可使用 `qg` 命令。安装方法如下：

```bash
npm install -g @quick-game/cli
```

## 命令行使用

### 1、创建联盟快游戏工程

```
qg init <project-name> [-t <template>] [-c <cwd dir>] [-f]
```

#### 参数

### `project-name`

要创建的联盟快游戏工程的名称。可以为 `.` ，当 `project-name` 为`.`时表示在当前目录创建联盟快游戏工程。

### `-t`

指定创建联盟快游戏工程使用的模板，默认为`default`，表示使用默认的模板。不指定该参数时就使用默认的模板。

> 目前只有`default`模板，所以该参数可以不指定，使用默认值即可

### `-c`

指定创建联盟快游戏工程的目录，不指定该参数时，使用`process.cwd()`也就是当前执行目录来创建，如果指定 了路径，就在指定路径创建。

### `-f`

如果指定的 `project-name` 目录已经存在，会提示用户是 '覆盖' 还是 '合并'，指定 -f 或者 --force 可以忽略提示，直接强制覆盖

#### 示例


```
//在当前路径创建名为abc的联盟快游戏工程
qg init abc
//在当前路径创建名为abc的联盟快游戏工程，如果已经存在 abc 则强制覆盖
qg init abc -f
//在当前路径直接创建联盟快游戏工程，假设当前路径为`/usr/name/demoGame/`，联盟快游戏工程名为demoGame
qg init .             
// 在 `/usr/name/documents/`路径创建名为abc的联盟快游戏工程
qg init abc -c /usr/name/documents/
// 在 `/usr/name/demoGame/`路径直接创建联盟快游戏工程，即联盟快游戏工程名为 demoGame
qg init . -c /usr/name/demoGame/
```

命令执行后，会在当前目录下创建文件夹，作为项目根目录，这个项目已经包含了项目配置与游戏入口的初始代码，项目根目录主要结构如下：

```
├── sign                      rpk包签名模块
│   └── debug                 调试环境
│       ├── certificate.pem   证书文件
│       └── private.pem       私钥文件
├── src
│   ├── image                 图片资源目录
│   │   └── logo.png          游戏图标
│   ├── js                    游戏业务逻辑目录
│   |   └── main.js           游戏业务逻辑代码
│   ├── game.js               游戏入口js
│   └── manifest.json         项目配置文件，配置游戏图标、包名等
└── package.json              定义项目需要的各种模块及配置信息Copy to clipboardErrorCopied
```

目录的简要说明如下：

- src：项目源文件夹

- sign：签名模块，当前仅有debug签名，**如果内测上线，请添加release文件夹，增加release签名**；**签名生成**:

  ```js
  openssl req -newkey rsa:2048 -nodes -keyout private.pem -x509 -days 3650 -out certificate.pem
  ```

### 2、构建联盟快游戏RPK包体

#### debug打包

```js
qg build
```

#### release打包

```js
qg release
```

编译打包成功后，项目根目录下会生成文件夹：build、dist：

- build：临时产出，包含编译后的页面js，图片等
- dist：最终产出，包含rpk文件。其实是将build目录下的资源打包压缩为一个文件，后缀名为rpk，这个rpk文件就是项目编译后的最终产出
- 若本地没有release签名，会自动根据本地的包名和配置生成`release签名`，建议cp提前生成好。签名需要保存的其他地方，用于后续更新打包。

### 3、启动调试服务

```js
qg server
```

- 将dist目录下的rpk包体创建http服务，使用快游戏调试器扫码可以进行下载安装rpk包体
- 游戏启动后，会自动打开chrome调试能力
