sofa-template-helper
v1.0.2
Published
sofa 模板模块
Downloads
9
Readme
sofa-template
sofa publish template
流程设计:
1,发布前检查
(1)是否有效的git仓库信息? 是否为有效的git仓库(checkGitInstall, checkGitLogin, checkGitRemote)
(2)是否包含配置文件? 1-查找当前目录下是否包含sofa.template.config.js文件 2-检验是否有效(这里不校验name, type, parentId,校验其他字段是否存在及值的类型)
2,与用户交互 (1)选择类型:[project, module, component],选择完写入sofa.template.config.js文件中。
(2)输入名称:根据type和name,到DB模块去查找有无重名的情况,没有则继续。
(3)如果选择type是module,则选择父亲模块。(基础数据是DB提供,有id和name)选择完把id写入sofa.template.config.js文件中,非module,parentId字段置null。 如果选择type是project,校验sofa.template.config.js中的modulesPath,compoentPath字段不为空并且有效。
//(4)[内置hooks这部分可以先不做]选择内置的hooks,多项选择,按顺序输入选择,把选择结果写到配置文件中。
3,代码质量检查
(1)project:查找根目录或package.json中有无eslint/tslint配置项
(2)modules/components:当前目录下有没有index文件
4,更新远程代码,并在仓库中打版本标签sofa_V0.0.1。(与git模块交互,在仓库中打tag)
5,检查数据库连接,读sofa.template.config.js配置 + 其他参数{url,version=0.0.1,status=1,publisher}写入模板库
涉及其他模块的接口:
1,git模块 (1) checkGitInstall(2)checkGitLogin (3)getLoginUserInfo (4) checkGitRemote(5)addTag
2,DB模块 (1) checkDbConnect (2)setTemplate (3)addLog(4)getTemplates
使用
运行sofa publish template命令,根据提示输入关键信息,最后得到发布结果反馈。
sofa update template
1,发布前检查
(1)是否有效的git仓库信息? 是否为有效的git仓库(checkGitInstall, checkGitLogin, checkGitRemote,checkGitAuth)
(2)在库里能否找到记录? 和DB接口交互,ifCanUpdate(gitAddress), 到库里找id,如果存在记录并且可以更新,返回id,yes继续操作,no退出。
(3)是否包含配置文件? 1-查找当前目录下是否包含sofa.template.config.js文件 2-检验是否有效(这里不校验name, type, parentId,校验其他字段是否存在及值的类型)
2,与用户交互
(1)选择类型:[project, module, component],选择完写入sofa.template.config.js文件中。
(2)输入名称:根据name和上文中的id,到DB模块去查找除当前id外的其他记录有无重名的情况,没有则继续。
(3)如果选择type是module,则选择父亲模块。(基础数据是DB提供,有id和name)选择完把id写入sofa.template.config.js文件中,非module,parentId字段置null。 如果选择type是project,校验sofa.template.config.js中的modulesPath,compoentPath字段不为空并且有效。
(4)[内置hooks这部分可以先不做]选择内置的hooks,多项选择,按顺序输入选择,把选择结果写到配置文件中。
3,代码质量检查
(1)project:查找根目录或package.json中有无eslint/tslint配置项
(2)modules/components:当前目录下有没有index文件
4,更新远程代码,并在仓库中打版本标签,这里需要做版本加法指定某一增量版本。(与git模块交互,包括获取tag list、打tag)
5,检查数据库连接,读sofa.template.config.js配置 + id + publisher写入模板库
涉及其他模块的接口:
1,git模块 (1) checkGitInstall (2)checkGitLogin (3)getLoginUserInfo (4) checkGitRemote(5)addTag(6)getTagsList [按顺序返回] 2,DB模块 (1) checkDbConnect (2)setTemplate (3)addLog(4)getTemplates (5)ifCanUpdate
sofa remove template / sofa retrieve template
无效流程:
- 运行 sofa remove template 命令;
- 调用 git 模块方法,判断用户是否登录,获取登录信息,若失败退出运行,成功执行下一步;
- 与 database 模块交互,获取当前用户已经发布的全部template,依次列出状态为有效的模板ID 和模板名称,并提示用户需要输入要删除的模板名称或者模板id,并校验是否为自己发布的template;
- 若不通过校验,给出重试提示;
- 若通过校验,与database 模块交互,进行软删除,删除成功后输出提示信息;
有效流程:
- 运行 sofa retrieve template 命令;
- 调用 git 模块方法,判断用户是否登录,获取登录信息,若失败退出运行,成功执行下一步;
- 与 database 模块交互,获取当前用户已经发布的全部template,依次列出状态为无效的模板ID 和模板名称,并提示用户需要输入找回的模板名称或者模板id,并校验是否为自己发布的template;
- 若不通过校验,给出重试提示;
- 若通过校验,与database 模块交互,将模板状态置为有效;
涉及其他模块的接口:
1、sofa-git:checkGitLogin,getLoginUserInfo;
2、sofa-database: getMyTemplateList(需提供当前用户发布的模板信息(包括id,name,status));
sofa search template [keywords]
- 用户输入检索模板关键字;
- 拿到关键字在模板库中检索符合条件的模板(通过 sofa-database,参数是‘,’分割的字符串)
- 回显可以使用的模板列表table,必要这些字段[ id, name, type, url, operator, detail ], id不展示作为之后可能的扩展功能;
涉及其他模块的接口:
1、sofa-database: searchTemplateByKeywords;
接口整理
若干问题的解释
1,配置文件是采用js,如何自动修改,以及如何避免脏值? Answer:
在相应的操作后会检验文件是否存在,如果不存在就自动在当前目录生成一个配置文件,并生成默认字段及默认值。
以sofa.template.config.js为例:
module.exports = {
name: '',
type: '',
frame: 'react',(当前目录或往上找package.json文件,其中description有无主流框架关键词)
isTs: false,(project判断目录下是否存在tsconfig.json文件/package.json中description有无ts关键词,module/component判断目录下的index文件的后缀名)
isBlank: true,
detail: '',
parentId: null,
modulePath: '',
componentPath: '',
microsPath: '',
hooks: [],
plugins: [],
};
避免脏值是通过配置文件的校验和与用户交互输入,比如name不能重复,parentId是有效id。
2,module模板常需要在后执行脚本谁来cover?内置hooks有哪些? Module模板自身去cover,可以根据config文件中的hooks配置,逐一执行,因为主要还是对module自身的修改,有小部分对父级project的修改,通过询问用户修改的父级页面。 内置hooks有如下:(待补充) (1)afterAddModuleHook:与用户交互获取名字,修改所有名字、是否需要自动修改menu,与用户交互获取文件路径、是否需要国际化,与用户交互获取文件路径 (2)afterAddModuleHook:是否需要自动修改menu,与用户交互获取文件路径、是否需要国际化,与用户交互获取文件路径
3, 模板中脚本的依赖的安装时机是什么时候?这些依赖在哪里配置?