自动生成md文档加强版--cli制作

1,247 阅读2分钟

今天除夕,在这持久迎新的日子里, 卡卡军在这里祝大家来年薪资噌噌往上涨, bug少少滴!
之前为了自己阅读源码方便, 于是手写了一个自动生成文档agmd v1版本, 但总感觉功能还是比较鸡肋,为此做了v2z增强

增强功能

  1. 过滤参数支持可自定义
  2. 新增-h 命令解析
  3. 优化文件结构符号

生成文档对比

增强前

image.png

增强后, 结构更加符合大众化,每个目录最后一个文件,有一个收尾符号└──

image.png

下面讲解一下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