npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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

无效流程:

  1. 运行 sofa remove template 命令;
  2. 调用 git 模块方法,判断用户是否登录,获取登录信息,若失败退出运行,成功执行下一步;
  3. 与 database 模块交互,获取当前用户已经发布的全部template,依次列出状态为有效的模板ID 和模板名称,并提示用户需要输入要删除的模板名称或者模板id,并校验是否为自己发布的template;
  4. 若不通过校验,给出重试提示;
  5. 若通过校验,与database 模块交互,进行软删除,删除成功后输出提示信息;

有效流程:

  1. 运行 sofa retrieve template 命令;
  2. 调用 git 模块方法,判断用户是否登录,获取登录信息,若失败退出运行,成功执行下一步;
  3. 与 database 模块交互,获取当前用户已经发布的全部template,依次列出状态为无效的模板ID 和模板名称,并提示用户需要输入找回的模板名称或者模板id,并校验是否为自己发布的template;
  4. 若不通过校验,给出重试提示;
  5. 若通过校验,与database 模块交互,将模板状态置为有效;

涉及其他模块的接口:

1、sofa-git:checkGitLogin,getLoginUserInfo;

2、sofa-database: getMyTemplateList(需提供当前用户发布的模板信息(包括id,name,status));

sofa search template [keywords]

  1. 用户输入检索模板关键字;
  2. 拿到关键字在模板库中检索符合条件的模板(通过 sofa-database,参数是‘,’分割的字符串)
  3. 回显可以使用的模板列表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, 模板中脚本的依赖的安装时机是什么时候?这些依赖在哪里配置?