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