npm package: @pitrix/iot
Description: IoT
Latest version: 1.13.2-beat1

# QingCloud Boss 2.0 IoT Sub Module

## 开发环境搭建

按照 [QingCloud Boss 2.0](https://git.internal.yunify.com/lizhi/pitrix-boss-console-2.0) 和 [第三方系统接入 BOSS2 标准](https://cwiki.yunify.com/pages/viewpage.action?pageId=34111735)来搭建，有几个地方需要注意或改动：

### set npm registry

除了要配置 [QingCloud Boss 2.0](https://git.internal.yunify.com/lizhi/pitrix-boss-console-2.0) 中的 registry 外，还要配置：

```shell
npm config set @BOSS:registry http://172.16.0.60:7001
```

### BOSS 中的 IoT 分支

```shell
subprojects/iot
```

### 安装依赖 `titan-plugins`

执行 [`npm i`](https://git.internal.yunify.com/lizhi/pitrix-boss-console-2.0#%E5%AE%89%E8%A3%85%E4%BE%9D%E8%B5%96) 之前，需执行

```shell
npm --registry=http://r.npm.internal.yunify.com/ install titan-plugins
```

### 安装本项目 npm packages

```shell
cd ./src/sub-projects/iot/
```

```shell
npm install
```

### 添加 Visual Studio Code 工作区设置（可选，不使用 Visual Studio Code 可忽略此节）

由于 `pitrix-boss-console-2.0` 项目下的 `.eslintignore` 有如下规则：

```shell
src/sub-projects/
```

因为在开发本项目时，是无法使用 ESLint 的。

又因为 `pitrix-boss-console-2.0` 项目下的 `.gitignore` 有如下规则：

```shell
.vscode/settings.json
```

因此我们可以向 Visual Studio Code 工作区设置 ESLint 的工作目录来使用 ESLint（需安装 [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)）；以及添加路径提示（需安装 [Path Intellisense](https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense)）。

```json
{
  "eslint.workingDirectories": ["./src/sub-projects/iot"],
  "path-intellisense.absolutePathToWorkspace": true,
  "path-intellisense.mappings": {
    "/": "${workspaceRoot}",
    "assets": "${workspaceRoot}/src/assets",
    "scss": "${workspaceRoot}/src/scss",
    "components": "${workspaceRoot}/src/components",
    "modules": "${workspaceRoot}/src/modules",
    "widgets": "${workspaceRoot}/src/widgets",
    "routers": "${workspaceRoot}/src/routers",
    "stores": "${workspaceRoot}/src/stores",
    "locales": "${workspaceRoot}/src/locales",
    "constants": "${workspaceRoot}/src/constants",
    "BICommons": "${workspaceRoot}/src/modules/OperationManagement/Commons",
    "subprojects": "${workspaceRoot}/src/sub-projects",
    "iot": "${workspaceRoot}/src/sub-projects/iot/src"
  }
}
```

---

## 版本发布流程

**标准版本:**

```shell
npm run release
qnpm publish
```

构建发布到仓库中所需的文件，standard-version 会生成 changelog，打上 tag 并提交 commit;

你也可以指定版本

```shell
qnpm run release -- --release-as 1.1.0
```

**预发布版本：**

预发布版本不希望生成 changelog， 所以可以在 package.json 中 手动调整版本号，例如 1.1.3-xx，发布时需要指定 tag 为 next。

```shell
qnpm publish --tag=next
```

---

## 更新到 staging 环境

### 合并代码

将 `subprojects/iot` 分支合并到 `testing` 分支

### 修改 webpack.\*.conf.js

将 `testing` 分支中 `./webpack/webpack.dev.conf.js` 和 `./webpack/webpack.prop.conf.js` 的 `resolve.alias.iot` 删掉

将 `./webpack/webpack.base.conf.js` 中的 `resolve.alias.iot` 做如下修改

```json
{
  "resolve": {
    "alias": {
      "iot": "@pitrix/iot/lib"
    }
  }
}
```

### 安装依赖

安装 titan-plugins

```shell
npm --registry=http://r.npm.internal.yunify.com/ install titan-plugins
```

安装其他 npm packages

```shell
npm install
```

### 打包

在本地跑一下 testing 分支，看有没有什么问题，没什么问题就可以打包了

```shell
npm run build
```

### 更新到 staging 环境

```shell
sh bin/rsync.sh staging
```

P.S.

需先添加本机的 SSH 公钥 到 BOSS2 的 staging 服务器

---

## 注意事项

### local_config.yaml

```yaml
server:
  backend_uri: http://boss2.staging.com
  port: 8888
  log_path: /pitrix/log/boss-console

client:
  global:
    api_host: http://boss2.staging.com
  iot:
    default_zone: staging
```

P.S.

```json
{
  "default_zone": {
    "staging": "staging",
    "production": "pek3"
  }
}
```

### 开发 URL

```shell
http://127.0.0.1:8888/
```

### 增加或修改导航

开发新页面时，需要在「BOSS2 后端管理系统」中的「Permissions」-「导航」里增加或修改。

地址

[testing](http://192.168.5.46:8887/backend_admin)

[staging](http://192.168.12.77:8081/backend_admin/)

账号

```json
{
  "username": "admin@alphacloud.com",
  "password": "zhu88jie"
}
```

详情请参见 [第三方项目开发注意事项](https://cwiki.yunify.com/pages/viewpage.action?pageId=34117434)

---

## 项目开发规范

参见 `pitrix-iot-console`中的 [项目开发规范](https://git.internal.yunify.com/f2e/pitrix-iot-console#%E9%A1%B9%E7%9B%AE%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83)

---

## 参考与引用

- [QingCloud Boss 2.0](https://git.internal.yunify.com/lizhi/pitrix-boss-console-2.0)
- [第三方系统接入 BOSS2 标准](https://cwiki.yunify.com/pages/viewpage.action?pageId=34111735)
- [Boss2/AppCenter](https://git.internal.yunify.com/stefan/appcenter)
- [QingCloud IoT 物联网平台](https://git.internal.yunify.com/f2e/pitrix-iot-console)