Skip to main content

commander

Commander.js v14 CLI 框架最佳實踐。當需要建立 CLI 工具、解析命令列參數、設計 subcommands 時使用。

설치로 이동

소스 정보

저장소
recca0120/codeatlas
최근 소스 활동
2026년 3월 27일 22:34
감지된 SKILL.md 언어
중국어
스타
1
포크
0

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
commander
description
Commander.js v14 CLI 框架最佳實踐。當需要建立 CLI 工具、解析命令列參數、設計 subcommands 時使用。
# Commander.js v14 ## 基本設定 ```ts import { Command } from "commander"; const program = new Command() .name("my-cli") .description("CLI description") .version("1.0.0"); ``` ## Options ```ts program .option("-d, --debug", "debug mode") // boolean .option("-p, --port <number>", "port", parseInt) // required value + parser .option("-c, --config [path]", "config file") // optional value .requiredOption("-u, --user <name>", "user"); // mandatory ``` ## Subcommands ```ts program .command("serve") .description("start server") .argument("[root]", "project root", ".") .option("-p, --port <number>", "port", parseInt) .action(async (root, options) => { console.log(`Serving ${root} on ${options.port}`); }); await program.parseAsync(); ``` ## 共用 Options ```ts function addSharedOptions(cmd: Command) { return cmd .option("-c, --country <code>", "country code") .option("-l, --limit <number>", "limit", parseInt); } addSharedOptions(program.command("collect")).action(async (opts) => { ... }); addSharedOptions(program.command("generate")).action(async (opts) => { ... }); ``` ## Async Action 用 `parseAsync()` 取代 `parse()`: ```ts program.command("fetch").action(async () => { await fetchData(); }); await program.parseAsync(); ``` ## 錯誤處理 ```ts import { InvalidArgumentError } from "commander"; function myParseInt(value: string): number { const n = parseInt(value, 10); if (isNaN(n)) throw new InvalidArgumentError("Not a number"); return n; } ``` ## Hooks ```ts program .hook("preAction", (_, cmd) => console.log(`Running: ${cmd.name()}`)) .hook("postAction", (_, cmd) => console.log(`Done: ${cmd.name()}`)); ``` ## TypeScript 強型別 安裝 `@commander-js/extra-typings` 可自動推導 `opts()` 型別。 ## 常用模式 | 模式 | 做法 | |------|------| | 顯示 help on error | `program.showHelpAfterError()` | | Exit override | `program.exitOverride()` + try/catch | | Choices | `new Option("--size <s>").choices(["s","m","l"])` | | Env fallback | `new Option("--port <n>").env("PORT")` |
GitHub에서 보기