今天除夕,在这持久迎新的日子里, 卡卡军在这里祝大家来年薪资噌噌往上涨, bug少少滴!
之前为了自己阅读源码方便, 于是手写了一个自动生成文档agmd v1版本, 但总感觉功能还是比较鸡肋,为此做了v2z增强
增强功能
- 过滤参数支持可自定义
- 新增-h 命令解析
- 优化文件结构符号
生成文档对比
增强前
增强后, 结构更加符合大众化,每个目录最后一个文件,有一个收尾符号└──
下面讲解一下cli的制作实现
cli解析
比如我需要在packgejson里面配置这样子一个命令
"scripts": {
"agmd":"npx agmd --ignore lib,node_modules,dist --include .js,.ts,.vue",
}
还可以支持 agmd -h 帮助, agmd -v 版本查看
这里我使用的是插件arg, 使用该插件可以让我们少写很多解析代码, 配置如下:
import arg from 'arg'
const stringToArgs = (rawArgs: string[]) => {
const args = arg(
{
'--ignore': String,
'--include': String,
'--version': Boolean,
'--help': Boolean,
'-h': '--help',
'-i': '--ignore',
'-in': '--include',
'-v': '--version'
},
{
argv: rawArgs.slice(2)
}
)
return {
help: args['--help'],
ignore: args['--ignore'],
include: args['--include'],
version: args['--version']
}
}
export default stringToArgs
通过把process.argv传入这个方法, 我们就可以得到如下一个object:
{
help: undefined,
ignore: 'lib node_modules dist',
include: '.js .ts .vue',
version: undefined
}
到这里,我们就可以,解析出上面命令中输入的ignore,include 配置的参数了, 如是我们输入agmd -h,那么就会得到
{
help: true,
ignore: undefined,
include: undefined,
version: undefined
}
然后在handle里面处理这些解析的参数, 那么一个带命令行解析的cli就出来了, 至此一个自动生成md文档加强版就制作完毕了
如果大家想知道里面具体实现md文档说明可参考往期作品自动生成目录md文件
本插件已发布 npm-agmd
开源地址git-auto-generate-md