CLI 里程碑
checkpoint-cli-apps;Node 脚本与 npm。
30 分钟
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 镜像的