# vivo-hap-toolkit (vivo 定制版)

快应用开发者工具

## 如何使用

1. 全局安装 vivo-hap-toolkit

   ```shell
   npm install -g vivo-hap-toolkit
   ```

2. 新建示例工程，方便开发者快速上手

   ```shell
   hap init `<project-name>`
   ```

3. 安装 npm 依赖

   ```shell
   cd `<project-name>`
   npm install
   ```

4. 开始开发

   ```shell
   npm run dev
   # 或
   npm run server -- --watch
   ```

5. 其他命令（[请参考开发者文档][docs]）

- [反馈问题](https://github.com/quickappcn/issues/issues/new/choose)
- [查看版本更新历史](https://bbs.quickapp.cn/forum.php?mod=viewthread&tid=935)

## Changelog

## [1.8.3] - 2020-09-29

基于 [hap-toolkit] 1.8.1

### 更新

- 兼容`<style lang="scss">`情况
- 预览页面优化
- 移除模板中的 babel.config.js 文件，兼容自定义 babel.config.js 文件

### 新增

- 添加打包来源及其他数据埋点文件
- 动态导入 js,提示用户需增加打包参数
- 加入多平台适配文件的默认模板

### 修复

- 修复运行时报错 $app_define_wrap$不存在的问题
- 修复在分包时动态引入 js 的报错
- 修复了 1080 部分编译报错的提示
- 修复默认新建工程 menu:true,导致 menubar 面板无法显示

## [0.7.8] - 2020-07-07

基于 [hap-toolkit] 0.7.5

### 更新

- 非文本组件包含文本给出 warning 提示
- 卡片去掉 system.hostconnection/system.cipher 的接口声明检查
- 卡片增加 slider/list/list-item 支持
- 升级 devtool，支持修改 appData

### 新增

- toolkit 改造适配多终端。hap init 命令加入 -d --device [device-type-list]选项,指定项目运行的设备类型,device-type-list 为字符串，以逗号连接，如 "tv,phone,car"
- 增加编译动态引入 js 文件的能力，即开发者可以使用 import().then()的方式引入 js 文件
- 支持编译全局公共组件，将 app.ux 引入的公共组件单独抽离到 app-chunks.json 中，不影响 app.js 体积
- 编译错误显示于预览界面
- 新增 drawer 组件
- 添加 sitemap 校验

### 修复

- 优化部分报错信息

## [0.7.6] - 2020-06-17

基于 [hap-toolkit] 0.7.3

### 更新

- 使用内置 debug 证书，release 证书移至 sign 下，同时做兼容处理
- 不再提示相同选择器的合并
- 优化预览报错与 404 页面
- 媒体查询编译不对长度单位进行操作
- 去掉 system.configuration 的接口声明检查
- 重构优化部分代码

### 新增

- 增加 dp 单位
- 加入 onKey 事件，加入通用属性 focusable 与 div 的 enablevideofullscreencontainer 属性
- 新增 scroll view 组件
- 适配多终端
- 支持全局公共组件

### 修复

- 修复删除编译模式错误
- 媒体查询 bugfix，只写@media screen 无法匹配
- 引入 npm-run-all，修复 win 下并行执行脚本只执行第 1 个的问题
- 修复模拟器无法正确链接 adb 问题

## [0.7.4] - 2020-06-05

基于 [hap-toolkit] 0.7.2

### 修复

- 修复修改卡片内容，预览报错

## [0.7.2] - 2020-04-14

基于 [hap-toolkit] 0.7.2

### 更新

- 升级 devtool 以适配高版本 chrome
- 去掉 vivo-hap sign distFile signFile 命令

### 新增

- 增加编译模式
- 增加命令 --split-chunks-mode=smart 抽离公共 js 资源
- 增加 vivo-hap resign 对未签名文件进行签名
- 增加 selected 伪类选择器校验
- 增加其他组件属性事件等

### 修复

- 修复 background 渐变样式格式化无法正确展示

## [0.6.9] - 2019-11-18

基于 [hap-toolkit] 0.6.8

### 更新

### 新增

- 增加打包参数 --not-sign，打出待签名包
- 增加配置项目下 quickapp.config.js 里 signOnLine 字段，将待签名包发送至该字段地址进行签名打包（线上签名）
- 增加打包参数 --disable-sign-online，关闭线上签名
- 增加签名命令 hap sign distFile signFile，用指定签名文件对指定待签名包进行签名打包

### 修复

- 修复快应用工程打包没加 --app 参数报错问题

## [0.6.8] - 2019-11-07

基于 [hap-toolkit] 0.6.8

### 更新

- 更新对 animation 样式校验
- 兼容 android 10 以上版本的 USB 调试功能
- toolkit 支持字体颜色 auto|transparent|currentColor 的编译
- 对 theme 开头的样式值放开不校验

### 新增

- 增加 ux 项目提取公共 css 样式的能力
- 增加快应用项目的 e2e 测试能力
- 增加测试 ux 项目的代码覆盖率的能力
- 增加非独立包非 base 包不打入 i18n 文件的能力
- 增加分包可以配置独立的 icon 的能力
- 增加支持 component 节点的编译能力
- 增加说明：针对 sourcemap 定位不准确的问题，请在命令行中添加`--match-sourcemap`选项

### 修复

- 修复 0.6.4 预览页面问题
- 修复了 1060 部分编译报错的提示
- 修复获取不到设备信息时的 localWsPort 报错问题

## [0.6.4] - 2019-09-17

基于 [hap-toolkit] 0.6.3

### 更新

- 允许打包本地资源，去掉 -l --local-image 指令
- 更新预览的 web.js 文件

### 新增

- 添加新的主题属性：theme.activeColor，theme.borderTopRadius，theme.borderBottomRadius
- 增加了对多语言包打包的能力
- 支持地图组件展示自定义 View 的能力

### 修复

- 补充了 1050 部分功能校验: 1.通用 resize 事件 2.slider 的 block-color 样式 3.map 的 polygons 属性和 poitap 事件 4.system 的 resident 接口和 service 的 ad、health、exchange 接口

## [0.6.2] - 2019-07-31

基于 [hap-toolkit] 0.6.1

### 更新

- 改为默认打包卡片，去掉 --vivo 参数，增加 --app 改为打包块引用
- 默认允许打包本地资源，暂时保留 -l --local-image 指令，功能改为不允许
- 修改 build 模式默认 sourcemap 选项 devtool 为 cheap-module-eval-source-map,如果开发者想还原默认的 sourcemap 行为,可以通过 `-- --devtool source-map`设置
- 调试器 支持`chrome[google-chrome]`浏览器和`chromium[chromium-browser]`浏览器

### 新增

### 修复

- 修复`{{}}`内文本带有/img/修饰符的正则表达式不生效的问题
- 修复 vue-dsl 使用 less 语法 validate 校验错误的问题
- 修复预览命令时报的路径错误
- 修复 macos 特定版本启动问题
- 修复 font-family 样式字符串带引号的问题

## [0.5.4] - 2019-06-05

基于 [hap-toolkit] 0.5.4

### 更新

- 证书私钥缺失时候，错误输出到 webpack）

### 新增

- 支持 app 全局样式的编译
- 支持 span 嵌套 span 标签

### 修复

- 修复 vue-dsl release 问题
- 修复 IDE 拷贝图片失败问题
- 修复 vue-dsl css2json 插件缓存问题

## [0.4.6] - 2019-05-06

基于 [hap-toolkit] 0.4.6

### 更新

- 更新新建卡片工程模板
- 添加`--local-image`参数用于卡片使用本地图片（`build`,`release`,`watch`命令有效）

### 新增

- 添加`--disable-stream-pack`参数用于禁用流式包（`build`,`release`,`watch`命令有效）
- 支持自定义配置
- 支持`font-weight`

### 修复

- 修复了 manifest 中 minPlatformVersion 为 1040 时 不会转换 ES6 为 ES5 的编译时 JS 报错
- 修复了 hap update --force 时 JS 报错的问题

## [0.3.2] - 2019-03-05

基于 [hap-toolkit] 0.3.1

### 更新

- 1040 平台支持
- 不再支持`node 6`，要求`node 8`以上版本
- 不再创建备份文件

### 新增

- 新增`web`预览功能，打开服务`/preview`页面可使用浏览器预览快应用
- 新增`hap preview`子命令，可直接预览`rpk`文件或解压的`rpk`文件目录（包括`build`目录）
- 新增`hap view`子命令，可用于直接查看`rpk` 文件。详情可执行`hap view --help`查看
- 监听模式现在会监听`manifest.json`文件

### 修复

- 修复了`hap-toolkit`导致系统`adb` 不可使用的问题
- 修复其他若干缺陷

### 优化

- 优化了`hap init` 子命令，当文件夹存在时会询问输入新的应用名
- 优化了错误/警告信息提示

## [0.2.8] - 2019-2-22

### 修复

- 修复卡片打包无输出的问题

## [0.2.6] - 2019-1-29

基于 [hap-toolkit] 0.2.1

### 更新

- 支持分包
- `chrome devtools` 升级到 66
- 移除的`mix`命令（`hap`和`mix`完全一致)
- 为避免跟[hap-toolkit]冲突，添加了`vivo-hap`命令（同`hap`）
- 优化错误栈信息
- 稳定性优化

### 修复

- 修复初始化模块的 elisnt 配置无效的问题
- 修复若干 bug
- 修复`toolkit`误报使用`node`原生模块问题

## [0.2.5] - 2019-1-5

基于 [hap-toolkit] 0.1.1

### 更新

- 卡片支持使用[`block`][block]组件
- 打包卡片时不再检查 `router.entry` 字段

## [0.2.4] - 2018-12-18

基于 [hap-toolkit] 0.1.0

### 更新

- 项目 package.json 的依赖只有 [hap-toolkit]，移除了其他依赖
- 支持可以自定义属性 data-xxx
- slot 可以作为 text 的子组件
- 支持 postcss 解析 css
- 不再检查 icon

### 修复

- 修复了图片资源检查的 bug

### 新增

- 支持 touchstart，touchmove，touchcancel，touchend 事件
- 支持 font-family 样式
- image 组件增加 complete、error 事件
- video 组件支持 muted 属性
- audio 组件支持 stop 方法
- 支持 CSS @font-face
- justify-content 支持 space-around
- background-image 支持网络图片地址
- input/textarea 组件增加 selectionchange 事件
- tab-content 组件增加 scrollable 属性
- input 组件支持动态切换 type 类型
- WebSocket 支持 ArrayBuffer

### [0.1.6] 2018-10-27

- 卡片允许使用 `service.stats`
- 增加系统颜色变量
  - theme.activeColor 点击按压颜色
  - theme.miniHeight 卡片最小高度(小卡片)
  - theme.middleHeight 卡片最小高度(中卡片)
  - theme.largeHeight 卡片最小高度(大卡片)

### [0.1.2] - 2018-10-10

- 修复路由设置 path 和路由名称不一致时使用了错误的路径的问题
- 提供 css 系统颜色变量
  - theme.borderRadius

### [0.1.0] - 2018-09-30

- 提供 css 系统颜色变量

  - theme.titleTextColor
  - theme.textColor
  - theme.buttonTextColor
  - theme.buttonClickTextColor
  - theme.backgroundColor

- 传入`--vivo` 参数时，`vivo-hap-toolkit` 会将只打包卡片；同时脱掉 `manifest.json` 中卡片不需要的数据，减少文件体积

### [0.0.42] - 2018-09-12

- 不再检查卡片缩略图

[docs]: https://doc.quickapp.cn/
[hap-toolkit]: https://www.npmjs.com/package/hap-toolkit
[block]: https://doc.quickapp.cn/tutorial/framework/framework-instructions.html#%E7%BB%84%E4%BB%B6-block

### 常见问题

#### 一、从小于 0.0.38 版本升级

若 hap-toolkit 从 0.0.37 升级上来，有比较大的改动，其中需要注意的是：

1. 项目下面的 .babelrc 文件变更为 babel.config.js 文件。babel.config.js 内容如：

```
module.exports = function(api) {
  api.cache(true)
  return {
    presets: ['@babel/preset-env'],
    plugins: ['@babel/plugin-transform-modules-commonjs'],
    babelrcRoots: ['.', 'node_modules']
  }
}
```

**.babelrc 文件需要删除。**

2. 项目的基础依赖只需要以下模块，package.json 里的 devDependencies 字段如：

```
{
  "devDependencies": {
    "babel-eslint": "^10.0.1",
    "eslint": "^5.12.1",
    "eslint-plugin-hybrid": "0.0.5",
    "hap-toolkit": "^0.4.3"
  }
}
```

**修改后请将 node_modules 和 package-lock.json 删除，再重新安装依赖。**

[反馈问题](https://github.com/quickappcn/issues/issues/new/choose)
[查看版本更新历史](https://bbs.quickapp.cn/forum.php?mod=viewthread&tid=935)
