前沿型CLI库——Clipanion

前沿型CLI库——Clipanion

去发现同类优质开源项目:https://gitcode.com/

Logo

Clipanion是一款类型安全的命令行接口(CLI)库,其最大的亮点在于它没有运行时依赖项。这款库由type-safe构建,以确保代码的稳定性和可预测性,并在Yarn项目中得到了广泛的应用和验证。

安装与引入

将Clipanion集成到你的项目中非常简单,只需一个命令:

yarn add clipanion

为什么选择Clipanion?

  • 高级类型支持 —— Clipanion允许你利用先进的TypeScript特性来定义命令和选项。
  • 嵌套命令 —— 支持多级命令结构,如yarn workspaces list
  • --选项代理 —— 无需--分隔符,可以透明地传递选项。
  • 多种选项类型 —— 包括否定、批处理等多种类型。
  • Typanion集成 —— 提供强大的选项验证功能。
  • 优化的状态机 —— 自动从你的命令生成高效的执行路径。
  • 内置帮助页面 —— 自动生成清晰易读的帮助文档。
  • 常见命令支持 —— 内置版本和帮助命令。

文档资源

想深入了解Clipanion的使用方法,欢迎访问官方文档网站:mael.dev/clipanion

迁移指南

如果你正在从Clipanion v2升级到v3,可以借助clipanion-v3-codemod工具进行快速迁移。

使用示例

创建一个新的命令很简单,只需继承自Command基类并实现execute方法:

class SuccessCommand extends Command {
    async execute() {
        return 0;
    }
}

通过paths静态属性,你可以指定命令对应的命令行路径:

class FooCommand extends Command {
    static paths = [[`foo`]];
    async execute() {
        this.context.stdout.write(`Foo\n`);
    }
}

class BarCommand extends Command {
    static paths = [[`bar`]];
    async execute() {
        this.context.stdout.write(`Bar\n`);
    }
}

定义选项就像声明普通类属性一样,同时利用Option命名空间的助手函数进行注解:

class HelloCommand extends Command {
    // 位置参数
    name = Option.String();

    async execute() {
        this.context.stdout.write(`Hello ${this.name}!\n`);
    }
}

对于选项值的验证和转换,Clipanion集成了Typanion库:

class AddCommand extends Command {
    a = Option.String({required: true, validator: t.isNumber()});
    b = Option.String({required: true, validator: t.isNumber()});

    async execute() {
        this.context.stdout.write(`${this.a + this.b}\n`);
    }
}

许可证

Clipanion遵循MIT许可证,详细信息见项目底部的许可证文件。


总的来说,Clipanion以其简洁的API、强大的类型系统和零依赖的特性,为开发高效且健壮的CLI应用提供了便捷的解决方案。无论你是经验丰富的开发者还是初学者,都将从它的灵活性和易用性中受益。让我们一起探索并享受编写CLI的乐趣吧!

去发现同类优质开源项目:https://gitcode.com/

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

房耿园Hartley

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

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

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

打赏作者

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

抵扣说明:

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

余额充值