大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
CLI 里程碑
命令行程序是后端与运维的「最小可交付单元」:读文件、调 API、批处理图片——无需浏览器。全栈路线图 checkpoint-cli-apps 要求你掌握 argv 解析、fs、HTTP、JSON、npm 第三方库。本课对齐 fullstack-roadmap 对应节点;若主栈是 Java,可用 Picocli + HttpClient 完成等价能力,Node 则是路线图原文示例语言。
学习目标
- 对照 /roadmaps/full-stack checkpoint-cli-apps,完成至少 一个 官方建议 CLI 项目(爬虫摘要、GitHub 星标、批量重命名或图片压缩)
- 熟练
process.argv/ commander / yargs(或 Java Picocli)与退出码约定 - 理解 CLI 在自动化链中的位置:本地脚本 → github-actions-essentials → 服务器 docker-essentials 容器内执行
能力清单
Checkpoint 隐含技能:
| 能力 | 典型 API / 库 |
|---|---|
| 读写文件 | Node fs/promises、Java NIO |
| 解析参数 | commander、Picocli |
| HTTP + JSON | fetch、GitHub REST |
| 第三方库 | cheerio、sharp、csv-parse |
| 错误处理 | try/catch、非零 exit code |
项目 idea 1:网页摘要
输入 URL + CSS 选择器,输出匹配元素的文本。cheerio 解析 HTML:
import * as cheerio from "cheerio";
const res = await fetch(url);
const html = await res.text();
const $ = cheerio.load(html);
console.log($(selector).text().trim());
注意:尊重 robots.txt、设置 User-Agent、处理 4xx/5xx。
项目 idea 2:GitHub 星标排行
可选两个日期,调用 GitHub Search API 查该时段高 star 仓库。需 Personal Access Token 提高 rate limit;参数校验日期格式。
项目 idea 3:目录内图片压缩
用 sharp 批量处理,支持 --out 输出目录;无 --out 则原地覆盖前 先备份 或拒绝执行(README 写清)。大目录注意内存与并发限制。
与全栈其他里程碑的关系
- fsm-crud 的 Todo CLI 偏数据库;本课偏 OS 与外部世界(文件、网络)
- 脚本可进 CI:例如 PR 时跑 lint CLI,见 github-actions-essentials
- 生产环境同类逻辑常打进 docker-essentials 镜像的
ENTRYPOINT
工程习惯
#!/usr/bin/env node与bin字段,支持npx或全局安装--help自说明;敏感 token 读环境变量,不写进仓库- 单元测试可 mock
fetch/ 临时目录(与 spring-boot-essentials 测试课精神一致)
练习
- 完成上述四类 idea 之一,README 含示例命令与 sample 输出
- CLI 对非法参数返回非零退出码与可读 stderr
- 在 /roadmaps/full-stack 勾选 checkpoint-cli-apps,仓库名小写连字符(如
github-stars-cli)
小结
CLI 里程碑 = 文件 + 参数 + HTTP + 第三方库。 它是自动化与后端脚本的基础。下一课进入 前端应用里程碑,从静态页走向完整浏览器端应用。