Logo of citty

citty

优雅的 CLI 构建器。

优雅的命令行界面构建器

  • 基于 mri 的快速轻量级参数解析器
  • 智能值解析,支持类型转换、布尔值快捷方式和未知标志处理
  • 嵌套子命令
  • 懒加载和异步命令
  • 可插拔和可组合的 API
  • 自动生成用法说明和帮助信息

🚧 该项目正在大力开发中。更多功能即将推出!

用法

安装包

# npm
npm install citty

# yarn
yarn add citty

# pnpm
pnpm install citty

导入

// ESM
import { defineCommand, runMain } from "citty";

// CommonJS
const { defineCommand, runMain } = require("citty");

定义要运行的主命令

import { defineCommand, runMain } from "citty";

const main = defineCommand({
  meta: {
    name: "hello",
    version: "1.0.0",
    description: "My Awesome CLI App",
  },
  args: {
    name: {
      type: "positional",
      description: "Your name",
      required: true,
    },
    friendly: {
      type: "boolean",
      description: "Use friendly greeting",
    },
  },
  run({ args }) {
    console.log(`${args.friendly ? "Hi" : "Greetings"} ${args.name}!`);
  },
});

runMain(main);

工具

defineCommand

defineCommand 是一个用于定义命令的类型辅助函数。

runMain

运行命令,支持用法说明和优雅的错误处理。

createMain

创建一个命令包装器,在调用时会调用 runMain

runCommand

解析输入参数并运行命令和子命令(非监督模式)。您可以从返回/等待的值中访问 result 键以获取命令的结果。

parseArgs

解析输入参数并应用默认值。

renderUsage

将命令用法呈现为字符串值。

showUsage

呈现用法并打印到控制台

开发

  • 克隆此仓库
  • 安装最新 LTS 版本的 Node.js
  • 使用 corepack enable 启用 Corepack
  • 使用 pnpm install 安装依赖项
  • 使用 pnpm dev 运行交互式测试

许可

用心制作 💛 根据 MIT 许可证 发布。

参数解析器基于 Luke Edwards (@lukeed) 的 lukeed/mri