共计 1801 个字符,预计需要花费 5 分钟才能阅读完成。
明天呢,筹备举荐一个工具
如果你当初没有开发命令行工具的打算
那能够先珍藏着
当前,或者,应该会用到吧
丹尼尔: 蛋兄,手头有个工作要开发一个命令行工具,有没疾速搞起来的方法
蛋学生: 用 ncgen 啊
丹尼尔: 额,这不是开发代码生成器的吗?我这不还没有命令行工具的我的项目模板嘛
蛋学生: 哦哦,也是,想错了。那看一下《烹饪一道美味的 CLI》呗,曾经把前因后果讲得很具体了
丹尼尔: 是很具体,但就是太过具体了,我想要嗖的一下就能搞定那种
蛋学生: 嗖的一下?容我想想,(~o~) . z Z
丹尼尔: 蛋兄,蛋兄 …
蛋学生: 想起来了,《烹饪一道美味的 CLI》有提到啊,就是 oclif 了
丹尼尔: 怎么用呢?假如我当初要开发一个百宝箱工具,就叫 dx-tools 吧
蛋学生: 没问题,首先必定是要主动初始化工程项目的啦,最低要求了
丹尼尔: 哎呦不错,开发的时候昨运行呢?
蛋学生: 简略~
丹尼尔: 那当初来给百宝箱工具减少复制的性能吧,如 dx-tools cp
蛋学生: 安顿。dx-tools cp
中的 cp
就是 dx-tools 的子命令(oclif 称为 command),oclif 也为 command 提供了代码生成工具
蛋学生: 运行后会生成 src/commands/cp.ts
代码文件。代码长啥样呢,咱们等会再看。先运行下看看成果,能够看出曾经有 cp
这个子命令了
丹尼尔: Good!光有 cp 还不行,还得指定参数,像这样子 dx-tools cp source_file target_file
蛋学生: 好咧!dx-tools cp source_file target_file
中的 source_file
和 target_file
是子命令 cp
的参数(oclif 称为 command arguments)。加参数前咱们先看下 cp
默认生成的帮忙信息,等会才好看出变动
丹尼尔: 仔细哦~
蛋学生: 后面提到生成的代码文件 src/commands/cp.ts
,这会咱们来看下代码。
import {Command, Flags} from '@oclif/core'
export default class Cp extends Command {
static description = 'describe the command here'
static examples = ['<%= config.bin %> <%= command.id %>',]
static flags = {// flag with a value (-n, --name=VALUE)
name: Flags.string({char: 'n', description: 'name to print'}),
// flag with no value (-f, --force)
force: Flags.boolean({char: 'f'}),
}
static args = [{name: 'file'}]
public async run(): Promise<void> {const {args, flags} = await this.parse(Cp)
const name = flags.name ?? 'world'
this.log(`hello ${name} from /Users/daniel/Projects/Test/dx-tools/src/commands/cp.ts`)
if (args.file && flags.force) {this.log(`you input --force and --file: ${args.file}`)
}
}
}
蛋学生: 咱们当初须要减少两个参数,小批改下
蛋学生: 执行看下帮忙信息,看,进去了
蛋学生: 再执行下,看看获取参数的成果
丹尼尔: Nice!最初我想加个选项,来指定如果指标文件存在,是否进行笼罩。像这样子 dx-tools cp -n source_file target_file
就示意不笼罩
蛋学生: -n
就是可选项,个别在命令行中称为 option,但在 oclif 这里是叫作 flag。再小批改下代码
蛋学生: 看下帮忙信息,搞定
丹尼尔: o(^@^)o 性能都差不多了,当初得欠缺帮忙信息,来进步用户应用体验。
蛋学生: 嗖. 嗖. 嗖.
蛋学生: Done!
丹尼尔: 这下完满了
蛋学生: 不,还差那么一点点
丹尼尔: 啥?
蛋学生: 公布啊,你不公布,他人怎么用呢
丹尼尔: Oh yeah!
蛋学生: 当然,oclif 的性能远不止这些,有趣味能够自行去摸索了,明天就到这了
丹尼尔: 恩恩,又到了说再见的时候了,88
蛋学生: 要不,点个赞激励一下再走 (^▽^)