unir-cli打包工具

简介

unir-cli是一个利用RN编译到多端的打包工具,在三端一致以后,我们RN开发,Web开发,mini开发仍然需要维护多套代码, 这个打包工具,就是为了解决这种不一致问题应运而生的。Unir是法语统一的意思,意为多端统一,也可以认为是Uni-rn的缩写。

安装

执行以下指令,选择release版本的unir-cli

yarn config set registry http://npmrepo.corp.qunar.com

yarn global add @qnpm/unir-cli

unir相关的指令介绍


unir init 对项目进行多端初始化

unir dev 启动开发服务,其中-t为必须参数
-t '--target <env>', '默认web,可选 web|wechat'
-p '--port <port>', '端口号'
-f '--force', '强制删除依赖和缓存,从0开始打包项目', 默认不开启
-d '--dev <branch>', '切换qrn-shadow打包项目分支','release', 默认release
-a '--analyze', '开启包解析',默认不开启
-h '--hot', '开启热更新',默认不开启
-n '--dependence-name', '本地链接子包的名称, 如果在custom中配置yarn link仍然不能满足需求,可以使用此选项', 默认不开启
-s '--speed-analyze', '开启打包速度分析', 默认不开启
-N '--no-reIntall-mirror', '不重新安装mirror镜像依赖, 如果不是首次启动应用, 并且确认unir.config.js中的qrnMirrorVersion没有改动, 建议开启此选项', 默认不开启

unir build 打包,其中-t为必须参数
-t '--target <env>', '默认web,可选 web|wechat'
-f '--force', '是否开启强制刷新',默认不开启
-d '--dev <branch>', '切换qrn-shadow打包项目分支','release', 默认release
-a '--analyze', '开启包解析',默认不开启

examples:

// 在端口2020启动web开发服务
unir dev -t web -p 2020
// 打包web产物
unir build -t web 
// 强制清除打包缓存,并启动web服务
unir dev -t web -f

使用步骤

1.进入到项目根目录

cd /projectName/

2.执行多端初始化,增加多端开发所需要的配置文件,执行指令

unir init

命令会自动在项目根目录下添加以下文件:具体配置介绍

|__ root
    unir.config.js
    index.web.js
    config.js

package.json中会增加如下scripts:

"dev:wx": "unir dev -t wechat",                          // 运行微信小程序开发模式
"dev:web": "unir dev -t web",                            // 运行web开发模式
"dev": "yarn start",                                     // 运行qrn开发模式
"build:wx": "unir build -t wechat",                      // 打包微信小程序到dist目录
"build:web": "unir build -t web",                        // 打包Web到prd目录
"build": "NODE_ENV=production remax build -t"            // 打包qrn
"custom": ""                                             // 自定义脚本

3.启动开发服务器

yarn dev:wx  //启动微信开发环境
yarn dev:web  //启动web开发环境
或手动执行
unir dev -t wechat
unir dev -t web

注意

  • 如果入口文件内 styles的声明写在了render方法后会出问题,需要将styles声明前移到render之前符合正确js写法,或者将styles单独用import方法放入别的文件中引入。
  • 当运行小程序开发模式时,注意项目内/dist下产物为软链接,对于项目本身的热更新只监听了src目录,改动不生效时注意目录是否正确。
  • 开发模式下,unir还提供了自定义脚本的执行功能,在打包环境初始化后,开始构建最终产物前,会执行自定义脚本。

例如:当你想要link本地依赖时,由于打包环境不在当前目录下,在项目下执行将无法link,你可以增加自定义脚本。 package.json:

{
    "scripts":{
        "custom":"yarn link @qnpm/somePacages"
    }
}

unir会在构建打包环境时,安装完依赖后,执行你的自定义脚本。

Demo

项目地址: http://gitlab.corp.qunar.com/fe_qrn/qrn_three_demo