UNPKG

crn-cli

Version:

The Ctrip React Native CLI Tools

107 lines (101 loc) 4.4 kB
## CRN-CLI crn-cli脚手架对RN原始的CLI进行二次包装,提供从工程创建,服务启动,在已集成框架的App运行RN代码等常用功能,方便开发人员快速上手 ``` Commands: init 建立并初始化CRN工程,基于React Native 0.59.0,React 16.8.3 start 启动CRN服务,默认端口8081 run-ios 启动IOS模拟器,运行App run-android 运行Android App pack 打包,生成common包和biz包 Options: -h, --help 显示命令帮助 -v, --version 显示版本 ``` ## 安装及使用 ### 安装 ```bash $ npm install -g crn-cli ``` ### 创建工程 ```bash $ crn-cli init CRNDemo ``` CRNDemo工程结构说明: ```bash ├── android //android源码工程 ├── ios //ios源码工程 ├── App.js //JS源码 ├── app.json //JS工程名配置文件 ├── babel.config.js //babel配置文件 ├── icon.png //图片资源 ├── index.js //JS入口文件 ├── package.json //工程配置文件 ├── crn_common_entry.js //common包入口文件 ├── rn-cli.config.js //rn cli配置文件 ├── metro.config.js //metro配置文件 ├── .buckconfig //buck配置文件 ├── .flowconfig //flow配置文件 ├── .gitattributes //git配置文件 ├── .gitignore //git配置文件 ├── .watchmanconfig //watchman配置文件 ``` ### 运行工程 进入目录运行项目 ```bash $ cd CRNDemo $ crn-cli run-ios #在iOS模拟器上运行Demo $ crn-cli run-android #在Android真机上运行Demo ``` 说明: 1. 本地启动server的模式运行,默认端口8081 2. iOS开发环境依赖NodeWatchmanReact Native 命令行工具以及 Xcode 3. Android开发环境依赖NodeWatchmanReact Native 命令行工具以及 JDKAndroid Studio 4. 首次执行需要build native源码,过程会比较慢 ## 打包 ### 配置 在当前工程目录下`package.json`中配置打包参数 ``` "packConfig": { "entryFile": "index.js", //打包入口文件 "bundleOutput": "publish", //打包产物输出目录 "packageName": "CRNDemo", //包名 "dev": false //打包环境 } ``` ### 1.执行打包命令 进入工程目录执行 ``` $ crn-cli pack ``` 打包完成后会生成`publish`文件夹,目录如下: ``` ├── publish //框架包rn_common目录结构 ├── rn_common ├── common_android.js /Android 框架代码,包括RN组件 ├── common_ios.js //iOS 框架代码,包括RN组件 ├── baseMapping.json //common模块ID映射表 ├── pack.config //打包日志文件,记录打包时间,RN版本 //业务包rn_CRNDemo目录结构 ├── rn_CRNDemo ├── assets //资源目录,定制过资源打包/加载流程,iOS/Android目录一致 ├── js-diff //Android和iOS平台差异代码,Android优先加载该文件夹中的业务代码 ├── js-modules //业务js代码目录 ├── _crn_config_v2 //配置文件,记录业务代码所在文件夹,默认是js-modules,同时记录业务代码入口模块文件名 ├── _crn_unbundle //CRN打包格式标识文件,该文件存在时候,才当做CRN包格式加载 ├── buMapping.json //业务模块ID映射表 ├── pack.config //打包日志文件,记录打包时间,RN版本 ``` rn_common为框架包,可以在后台线程加载,业务包在进入业务的时候才开始加载 ### 2.拷贝打包产物到APP中 拷贝`rn_common`,`rn_CRNDemo`到`./ios/CRNDemo/webapp`,`./android/app/src/main/assets/webapp`目录下 ### 3.运行APP访问页面 #### CLI运行 ``` $ crn-cli run-ios --url /rn_CRNDemo/_crn_config?CRNType=1+CRNModuleName=CRNDemo $ crn-cli run-android --url /rn_CRNDemo/_crn_config?CRNType=1+CRNModuleName=CRNDemo ``` 参数说明:`CRNType`,`CRNModuleName`必传 #### IDE运行 `xcode`打开`./ios/CRNDemo.xcodeproj`工程,运行 `Android Studio`导入`./android`工程,Run