不会总结,别担心我,我哭一个月就好了
2018-09-30 11:27:30 0 举报
AI智能生成
qrn
作者其他创作
大纲/内容
md平台
http://md.corp.qunar.com/
http://md.corp.qunar.com/
qrn-publish-script
md平台打包脚本 new_for_md
md平台打包脚本 new_for_md
1. 读取环境参数并判断环境
本地调试打包脚本
1. 从gitlab上拉取要打包的代码
2. 在qrn-publish-script项目根目录下创建 `.dev` 文件, 内容如下
{
"deploy_type": "beta",
"ProjectPath": "~/Public/Qunar/source-code/qrn-demo/",
"WORKSPACE": "~/Public/Qunar/source-code/qrn-demo/",
"TargetDir": "~/Public/Qunar/source-code/qrn-demo/dist/",
"PkgUrl": "http://l-yum2.cm.cn1.qunar.com/test/mobile_app/qp/m_rn_qrn_demo/b-180607-183934-adwon.lin_621/",
"OutputTag": "b-180607-183934-adwon.lin",
"ForBeta": "true",
"params_json": {
"app_belongs_to": "10010",
"hybrid_id": "qrn_demo",
"app_platform": ["iOS", "android"],
"iOS_vid": "vid_80011132",
"android_vid": "vid_60001160"
}
}
ProjectPath: 选择要调试的本地项目
TargetDir: 产物目录
{
"deploy_type": "beta",
"ProjectPath": "~/Public/Qunar/source-code/qrn-demo/",
"WORKSPACE": "~/Public/Qunar/source-code/qrn-demo/",
"TargetDir": "~/Public/Qunar/source-code/qrn-demo/dist/",
"PkgUrl": "http://l-yum2.cm.cn1.qunar.com/test/mobile_app/qp/m_rn_qrn_demo/b-180607-183934-adwon.lin_621/",
"OutputTag": "b-180607-183934-adwon.lin",
"ForBeta": "true",
"params_json": {
"app_belongs_to": "10010",
"hybrid_id": "qrn_demo",
"app_platform": ["iOS", "android"],
"iOS_vid": "vid_80011132",
"android_vid": "vid_60001160"
}
}
ProjectPath: 选择要调试的本地项目
TargetDir: 产物目录
3. 配置好之后可用使用 vscode 进行断点调试, 如下为 launch.json 中的内容
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "ts-debug",
"program": "${workspaceFolder}/dist/build.js",
"outFiles": [
"${workspaceFolder}/dist/**/*.js"
],
"protocol": "inspector"
}
]
}
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "ts-debug",
"program": "${workspaceFolder}/dist/build.js",
"outFiles": [
"${workspaceFolder}/dist/**/*.js"
],
"protocol": "inspector"
}
]
}
2. 创建本地运行时环境实例 env: new Env({...})
3. 创建被打包项目的参数实例 param: new Parameter({...})
4. 创建服务信息的实例 service: new Service(env, param)
参数即为第2和第3不得到的结果
service通过接口实时获取相关信息
参数即为第2和第3不得到的结果
service通过接口实时获取相关信息
5. 执行打包相关操作
getCurVersion 获取打包版本
npmInstall NPM 依赖安装
buildBundle 构建 Android/iOS bundle
1. 检查 index.yaml 文件是否符合规范
2. 调用打包工具进行打包
QRNPackager
打包工具 qrn-pack-tool
打包工具 qrn-pack-tool
入口, 接收打包脚本传入的参数或者读取process.argv
cli.run: function (argvPassed) {
var argv = argvPassed === cli.undefined ? process.argv : argvPassed
require('./qrn/src/cli.js').run(argv, defaultCli, cli)
}
cli.run: function (argvPassed) {
var argv = argvPassed === cli.undefined ? process.argv : argvPassed
require('./qrn/src/cli.js').run(argv, defaultCli, cli)
}
QRN PACK: require('./qrn/src/cli.js')
用以校验 index.yaml QFontSet.js QImageSet.js
等配置,以及在 PACK 结束后,
注入特有的签名,并生成 生成 staticAssets.json
用以校验 index.yaml QFontSet.js QImageSet.js
等配置,以及在 PACK 结束后,
注入特有的签名,并生成 生成 staticAssets.json
1. 如果不是bundle 命令输出帮助文档
2. 重组打包参数
3. 打包前的相关校验
1. 检查是否存在产物目录, 不存在即创建
2. 检查qpinfo传入的参数是否符合规范, 如不符合终止打包并报错
3. 检查index.yaml文件是否存在, 如不存在终止打包并报错
存在index.yaml时检查hybridId是否配置正确, 如不正确终止打包并报错
存在index.yaml时检查hybridId是否配置正确, 如不正确终止打包并报错
4. 检查字体文件中的配置是否正确, 如不正确终止打包并报错
- 根据注解"@providesModule QFontSet"查找目标文件
- 引入目标文件检查 key: fonturl, 相关规范: http://wiki.corp.qunar.com/confluence/pages/viewpage.action?pageId=105923056
- 根据注解"@providesModule QFontSet"查找目标文件
- 引入目标文件检查 key: fonturl, 相关规范: http://wiki.corp.qunar.com/confluence/pages/viewpage.action?pageId=105923056
5. 检查图片配置, 如不正确终止打包并报错
- 根据注解"@providesModule QImageSet"查找目标文件
- 引入目标文件检查 key: fonturl, 相关规范: http://wiki.corp.qunar.com/confluence/pages/viewpage.action?pageId=105923056
- 根据注解"@providesModule QImageSet"查找目标文件
- 引入目标文件检查 key: fonturl, 相关规范: http://wiki.corp.qunar.com/confluence/pages/viewpage.action?pageId=105923056
6. 进入打包阶段
defaultCli.run(...)
7. 打包后
- 生成 staticAssets.json 文件
- 产物后追加签名
- 生成 staticAssets.json 文件
- 产物后追加签名
4. 打包后在产物中追加签名
RN Pack => defaultCli = require('./local-cli/cli.js')
对metro-bundler库进行了一些修改
对metro-bundler库进行了一些修改
3. 打包后在bundle文件中添加关于字体版本的处理代码
buildQP 构建 Android/iOS QP包
buildQPJson 构建QP Json 文件
copyResource 拷贝资源文件
cleanSpace 清理工作目录
收藏
收藏
0 条评论
下一页