今天,我要推荐一个工具。如果您不打算开发命令行工具,可以保存以备后用。也许,你应该使用它。丹尼尔:丹兄弟,我手头有一个。任务是开发一个命令行工具。有快速的方法吗?蛋先生:用ncgen大牛:嗯,这不是代码生成器吗?我没有命令行工具的项目模板。蛋先生:哦,是的,我错了。来看看《烹饪一道美味的 CLI》,来龙去脉我已经说的很详细了。丹尼尔:很详细,但是太详细了。我想用嗖嗖声完成那种鸡蛋。先生:嗖的一声?让我想想,( ̄o ̄)。zZ大牛:蛋哥,蛋哥……蛋先生:我想起来了,《烹饪一道美味的 CLI》提到了,是oclif大牛:怎么用?假设我现在要开发一个百宝箱工具,就叫它dx-tools吧蛋先生:没问题,首先要自动初始化项目,最低要求大牛:哎哟,挺好的,你昨天运行了吗在开发过程中?蛋先生:简单~大牛:现在给宝箱工具增加复制功能,比如dx-toolscp蛋先生:安排。dx-tools中的cpcp是dx-tools的一个子命令(oclif叫command),oclif也提供了command的代码生成工具蛋先生:运行后会生成src/commands/cp.ts代码文件产生。代码是什么样子的,我们稍后会看到。先运行一下看看效果。你可以看到已经有一个cp子命令。丹尼尔:好!光有cp是不行的,还得指定参数,比如这个dx-toolscpsource_filetarget_file蛋先生:太好了!dx-tools中的source_file和target_filecpsource_filetarget_file是子命令cp的参数(oclif称为命令参数)。在添加参数之前先看一下cp默认生成的帮助信息,后面会看到变化大牛:小心~蛋先生:前面说的生成的代码文件src/commands/cp.ts,我们先看一下现在的代码。import{Command,Flags}from'@oclif/core'exportdefaultclassCpextendsCommand{staticdescription='在此处描述命令'staticexamples=['<%=config.bin%><%=command.id%>',]staticflags={//带有值(-n,--name=VALUE)的标志name:Flags.string({char:'n',description:'nametoprint'}),//带有的标志无值(-f,--force)force:标志。boolean({char:'f'}),}staticargs=[{name:'file'}]publicasyncrun():Promise
