# mydemo **Repository Path**: mystudy2019/mydemo ## Basic Information - **Project Name**: mydemo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-10-27 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 开发工具 vscode,sync-setting (非必须,只是惯用editor,好处是快捷键绑定任务绑定jtx命令已做好,方便使用) visualstudio, xamarin, androidsdk (必须) dotnet(必须,编译ilrgen要用) docker(非必须,但开发机上部署数据库和测试发布要用) wsl(必须,windows上jtx和server都运行在wsl模式) dotfiles(非必须,个人定制,方便shell操作) fnm,node12(fnm非必须,但node必须安装) ### jtool, 综合管理cli ``` yarn global install @wellbye/jtool ``` 安装后,可运行`jtx`命令 与my框架相关的扩展命令放在`jcmd`目录中,通过`.jtrc.std.js`引用注册 这些代码由ts编写,因此需要编译后才能被加载: - 在jcmd目录中,`yarn build`首次编译,得到`dts`命令(会报类型错误,没关系) - 运行`jtx dts`,将yarn global package路径符号链接到build/yarnglobal,因tsconfig中需要引用jtool里的类型,但其全局安装目录与用户名相关,无法在配置中写死,所以才需要这一步生成稳定的相对路径 - 运行`yarn watch`挂机编译,由于在上一步生成符号链接已满足jtx类型引用,所以编译不会再报错了 ### ios上真机部署需要: ios-deploy2,改过的真机部署cli,已包含在jtool idevicesyslog,原版的真机看log工具,需要自己安装: ``` brew install --HEAD libusbmuxd libimobiledevice ``` ### xamarin相关指令 - jtx use projectPath [-w] ,链接指定项目,使整个my框架处于该项目开发状态。`-w`同时开启`watch模式`,项目目录下的资源素材文件一旦修改会实时同步到my框架设定的编译、打包目录中。 - jtx xma-start-ios [--sim] ,启动ios程序 - jtx xma-log-ios [--sim] [-f] [--ll] ,显示ios日志(调用xcrun simctl log命令),`-f`做格式化处理去掉不重要的字段,`--ll`做内容过滤,`l`数量越多过滤掉的不重要信息越多。 - jtx xma-start-android - jtx xma-log-android [-m],显示android日志,`-m`过滤与mono无关的信息 ### docker部署机制 ##### jtx dkb [--release],制作docker image。dkb为docker build的缩写。 - 因docker build时不支持符号链接,而server/assetc是从项目目录链接过来的,所以build不是在开发目录执行。而是先通过`rsync`将server目录增量同步到`build/server4dockerbuild`下,这个过程中将符号链接目录下的文件转化成真实子目录,从而适应docker build需要。 - build会生成`api`和`res`两个镜像,其中`res`是纯数据镜像,包含`build/uassets`和`build/xassets`两个目录,每次发布热更新时只要替换这个镜像。 - 生成的镜像名前缀为项目名,而项目名是从服务器的代码文件中获取,即`src/configc.ts`(实际从编译后的js文件),调用其`getProjectName`获得。 ##### jtx dkd [-t target] [-sbd] ,生成docker-compose文件并部署。dkd为docker deploy的缩写。 因为不同的部署模式各方面配置差异较大,因此通过动态生成`docker-compose.yml`文件的方式来适应。其基础模板文件为`server/docker-compose.ymlt`,通过`mustache`模板替换来生成最终文件。 - -t target,指定部署的基本配置名,该配置本身在在`.jtrc.js`中定义: `module.dockerDeploy[target]` 一个标准配置模板为: ```js xjh: { ['api-port-list']: [2200, 2202], ['env-list']: { TYPEORM_HOST: 'dockerhost', }, docker: { registry: { username: 'wellbye@163.com', url: 'registry.cn-hangzhou.aliyuncs.com', }, image: { api: 'registry.cn-hangzhou.aliyuncs.com/mydemox/mbx-api', res: 'registry.cn-hangzhou.aliyuncs.com/mydemox/mbx-res', }, }, ssh: 'af', }, ``` - ssh:可以是域名、ip或定义在`ssh_config`中的别名,总之要保证将其传给ssh命令时能连通(必须做好公钥免密登录) - docker.registry:镜像库的配置,需提前手动在开发机和部署机上完成cli登录,以使后续的docker pull/push命令可用。 - docker.image:定义好远程api和res镜像地址,build好的镜像会推送到这里,部署机上也会从这里去拉取。
- -s 在部署前,先停止、删除已运行的容器。 - -b 在部署前,先执行build,build完会推送到上述配置中的远程仓库。 - -d 使用`DevAssets`模式部署,仅限于开发机本机部署,不挂载`res`镜像,而是直链本地的build目录,方便修改调试热更资源