开发自己的脚手架(Rollup+Typescript)-(03)-(CAC 命令行交互)

CAC介绍

是一个JavaScript库,用于构建应用的CLI。

  • 超轻量级:没有依赖关系,只有一个文件。
  • 简单易学: 构建简单的CLI只需学习4种API :cli.option cli.version cli.help cli.parse。
  • 功能抢到: 例如默认命令,类似git的子命令,对所需参数和选项进行验证,可变参数,点嵌套选项,自动帮助消息生成等功能。
  • 开发人员友好: 用TypeScript编写。

文档传送门

安装CAC
yarn add cac
引入cac

src/cli.ts

import cac from 'cac'
// 从package.json中获取版本及名字
import { name, version } from '../package.json'
// 实例化cac
const cli = cac(name)
/**
 * 定义异常处理公共函数
 * @param err 
 */
const onError = (err: Error): void => {
    console.error(err.message)
    process.exit(1)
}
// 监听未捕获的异常事件
process.on('uncaughtException', onError)
// 监听Promise未捕获的异常事件
process.on('unhandledRejection', onError)

cli
    // 添加命令 ‘<>’ 中为必填项,'[]'中为选填项
    .command('<template> [project]', 'Create new project from a template')
    // 添加配置 --force 简写为 -f; 
    // 如果目标存在则覆盖
    .option('-f, --force', 'Overwrite if the target exists')
    // 添加配置 --offline 简写为 -o ;
    // 是否使用本地模板
    .option('-o, --offline', 'Try to use an offline template')
    // 示例内容配置
    .example('  # with an official template')
    .example(`  $ ${name} <template> [project]`)
    .example('  # with a custom github repo')
    .example(`  $ ${name} <owner>/<repo> [project]`)
    // 定义一个动作,传入一个回调函数
    .action((template: string, project: string = '.', options) => {
        console.log(template, project, options)
    })

// -h, --help出现标志时输出帮助信息。
cli.help()

// -v, --version 出现标志时输出版本号。
cli.version(version)

cli.parse()
测试命令
# 默认命令
<projectName>  template  project -f -o
# 输出结果
# 第一个参数是传入的模板名字 第二个是项目名字  第三个是传入的options 
template project { '--': [], f: true, o: true, force: true, offline: true }
# 帮助命令
<projectName>  -h 
<projectName>  --help
# 输出结果
<projectName> v1.0.0
Usage:
  $ <projectName> <template> [project]
Commands:
  <template> [project]  Create new project from a template
For more info, run any command with the `--help` flag:
  $ <projectName> --help
Options:
  -f, --force    Overwrite if the target exists 
  -o, --offline  Try to use an offline template 
  -h, --help     Display this message 
  -v, --version  Display version number 
Examples:
  # with an official template
  $ <projectName> <template> [project]
  # with a custom github repo
  $ <projectName> <owner>/<repo> [project]
# 查看版本命令
<projectName>  -v
<projectName>  --version
# 输出结果
# <projectName>/1.0.0 darwin-x64 node-v13.13.0
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵忠洋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值