code-push配置(mac OS环境下)
code-push配置(mac OS环境下)
1. homebrew
Homebrew, Mac系统的包管理器,用于安装NodeJS和一些其他必需的工具软件。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
译注:在Max OS X 10.11(El Capitan)版本中,homebrew在安装软件时可能会碰到/usr/local目录不可写的权限问题。可以使用下面的命令修复:
sudo chown -R 'whoami' /usr/local
2. Node
使用Homebrew来安装Node.js.
React Native目前需要NodeJS 5.0或更高版本。本文发布时Homebrew默认安装的是最新版本,一般都满足要求。
brew install node
安装完node后建议设置npm镜像以加速后面的过程(或使用科学上网工具)。注意:不要使用cnpm!cnpm安装的模块路径比较奇怪,packager不能正常识别!
npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global
3. CodePush 运行命令
- 安装
npm install -g code-push-cli
- 创建账号
code-push register
这将会启动浏览器,要求验证你的Github或微软帐号。一旦验证成功,它将创建一个CodePush帐号跟你的Github或MSA相连,并生成一个访问密钥(Access Key),你可以拷贝/粘贴到CLI以便登录。
- 身份认证
在CodePush CLI里大多数命令需要身份认证,所以在你开始管理你的帐号之前,你需要使用GitHub或者微软帐号注册和登录。
code-push login
这将会启动浏览器,要求验证你的Github或微软帐号。这将生成一个访问密钥(Access Key),然后你可以拷贝/粘贴到CLI(它会提示你这样做)。这时你就认证成功了,并且可以关掉你的浏览器了。
如果在任何时候你想确认你是否已经登录了,你可以运行如下命令来显示与你当前认证会话相关的e-mail帐号,而且这个身份提供者是连接到(如:GitHub)的。
code-push whoami
当你从CLI登录后,你的访问密钥(Access Key)就一直保存在你本地磁盘上,所以你不必每次使用帐号是都需要登录。为了终止会话或删除AccessKey,你可以简单的运行如下命令:
code-push logout
如果你在一台机器上忘记注销(比如:你朋友的电脑上),你可以使用如下命令列出和删除任何“激活中”的Access Keys。Access Keys列表将显示创建Key的机器名和发生登录的时间。这让你可以简单的认出那些你不想要保存的Keys。
code-push access-key ls
code-push access-key rm <accessKey>
如果你需要额外的Keys,被用来验证CodePush服务而不需要给你的GitHub和/或访问微软凭证,您可以运行下面的命令来创建一个持久的Access Key(连同一个描述):
code-push access-key add "VSTS Integration"
在创建新的密钥之后,您可以在login命令后使用--accessKey标志并指定其值,它允许您执行“无头”身份验证,而不是启动一个浏览器。
code-push login --accessKey <accessKey>
当使用这种方式登录时,密钥(Access Key)在注销时不会自动失效,它可以一直被使用,除非它从CodePush服务端明确被移除掉。然而,仍然建议一旦你完成了会话就注销掉,以便从本地磁盘移除掉你的授权证书。
- 应用管理
在你发布更新前,你需要用如下命令在CodePush服务上注册一个App:
code-push app add <appName> <os> <platform>
如果你的App既有iOS又有Android,请为不同平台创建单独的App(详情参照下文的注解)。一个平台一个。这样你可以单独的管理和发布更新,从长远来看这会让事情更简单。大部分人的命名约定会在App名加后缀-IOS和-Android。例如:
code-push app add MyApp-Android
code-push app add MyApp-iOS
注意:在iOS和Android使用相同的app可能会导致安装异常,因为CodePush在iOS和Android的更新包内容会有差异
所有新的Apps自动会出现有个部署环境(Staging和Production),为了你可以开始发布更新到不同的渠道而不需要做任何其它的事(参考下面的部署指南)。你创建一个App之后,CLI将显示Staging和Production环境的开发密钥,你就可以使用不同的SDKs(详细请看Cordova 和 React Native)来配置你的手机端App了。
如果你不想要一个App,你可以从服务端上移除它,命令如下:
code-push app rm <appName>
做这个移除请务必小心,因为任何配置了它的App都将停止收到更新了。
最后,如果你想列出你在CodePush服务上注册的所有Apps,你可以运行如下命令:
code-push app ls
常用命令
- 打包
react-native bundle --platform ios --entry-file index.js --bundle-output ./bundles/main.jsbundle --dev false
- 发布
code-push release cstore-ios ./bundles/main.jsbundle 0.0.1 --deploymentName Production --description “版本描述” --mandatory true
- 更新
code-push release cstore-ios ./bundles/main.jsbundle 0.0.1 --deploymentName Production --description "1.支持文章缓存。" --mandatory true
- 查看所有更新
code-push deployment history cstore-ios Staging
- 回滚
code-push rollback cstore-ios Staging