我们在项目开发的过程中,想要提升开发效率,要从各个方面入手,比如同步api接口。
目前服务端有很多比较流行的接口文档管理工具,比如swagger。本次api同步工具,以swagger为文档管理为基础。
首先以vswagger-cli为例,看下这个工具的代码结构。
一、分析依赖包的功能
1、axios:是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
2、chalk:是一个颜色的插件。
3、commander:是一个轻巧的nodejs模块,提供了用户命令行输入和参数解析强大功能。commander源自一个同名的Ruby项目。
可进行对外命令扩展 即用其配置node命令
- option(): 初始化自定义参数对象,设置“关键字”和“描述”。通过option设置的选项可以通过program.chdir或者program.noTests来访问。
- command(): 初始化命令行参数对象,直接获得命令行输入。通过command设置的命令通常在action回调中处理逻辑。
- Command.command(): 定义一个命令名字
- Command.action(): 注册一个callback函数
-
Command.option(): 定义参数,需要设置“关键字”和“描述”,关键字包括“简写”和“全写”两部分,以”,”,” ”,”空格”做分隔。 - Command.parse(): 解析命令行参数argv
- Command.description(): 设置description值
- Command.usage(): 设置usage值
4、download-git-repo: 下载并解压缩git存储库。
5、lodash: 是一个一致性、模块化、高性能的 JavaScript 实用工具库。
lodash的几个优点:
- lodash 通过降低 array、number、objects、string 等等的使用难度从而让 JavaScript 变得更简单。
-
lodash 的模块化方法 非常适用于:
- 遍历 array、object 和 string
- 对值进行操作和检测
- 创建符合功能的函数
6、metalsmith: 一个非常简单,可插拔的静态网站生成器,
7、ora: 主要用来实现node.js命令行环境的loading效果,和显示各种状态的图标等
8、rimraf :以包的形式包装rm -rf命令,就是用来删除文件和文件夹的,不管文件夹是否为空,都可以删除。
9、semver:它是 语义化版本(Semantic Versioning)规范 的一个实现,目前是由 npm 的团队维护的,实现了版本和版本范围的解析、计算、比较,在 NPM 的被依赖(Most depended-upon)榜单中排名 34.
10、tildify:把绝对路径转化成波浪路径, 如 /Users/sindresorhus/dev → ~/dev
11、user-home:获取用户主目录的路径
二、源码解析
1、vswagger
1 |
|
这里是扩展一些外部命令:vswagger init,vswagger clean,vswagger check,供项目开发者使用。
2、vswagger-init
思路是先找到.vswagger.js文件 如果有的话,获取里面的配置,遍历其projects数组,根据配置中的api-doc路径获取api接口数据,然后一一生成function到项目中。
1 |
|
3、generate.js
1 |
|
4、使用
1 |
|
一、发布npm包
这一步我们要弄清楚如何发布npm包,
1、先执行npm adduser 输入账号 密码和邮箱(注意此步骤一定要验证邮箱)
这是我运行之后报的错:
1 |
|
是因为之前设置了某个源 现在要把源设置为npm官方的源
1 |
|
然后执行npm publish
成功后在别的项目中执行npm install npmname 即可使用
更新npm包也适用npm publish 不过要注意修改package.json的版本号,不然会报错
参考文献: