大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
综合练习
把本 track 串起来:写一个 track-import CLI——交互或 flag 读入 JSON/CSV,参数校验,可选写入 PostgreSQL 或 MongoDB,支持 dry-run 与 glob 批处理。目标不是功能炫,而是 可测试、可发布、可交接 的 Node 工程实践。
学习目标
- 独立完成从 nva-intro 到 nva-glob 的交叉引用
- 实践 semver 发包或
npm link本地消费 - 衔接 nodejs-essentials、nestjs-essentials、postgresql-essentials、mongodb-essentials、testing-essentials
任务说明
实现 CLI 包 @you/track-import(名称自定),支持:
track-import run -f data/tracks.json --driver postgres --dry-run
track-import run -f data/*.json --driver mongo
track-import validate -f data/tracks.json
1. 结构与发包(nva-packages、nva-semver)
- ESM、
exports、bin.track-import -
engines.node >= 20 - README:安装、env、示例
2. CLI 与交互(nva-cli、nva-prompts)
-
run/validate子命令 - 无 TTY 时用
--driver/ env,有 TTY 可 prompts 选择 postgres | mongo - stderr 日志、stdout 输出 JSON 摘要(行数、错误列表)
3. 错误与事件(nva-events、nva-errors)
-
UserError:非法 slug、缺字段 → exit 1 - 参数误用 → exit 2
- 可选:
EventEmitter报告progress/done供将来 GUI 用
4. 文件与模板(nva-glob、nva-templates)
- globby 批处理
data/*.json - (选做)Handlebars 生成 import 报告
out/report.md
5. 数据库(nva-db)
- postgres:
pg+$1参数化 insert(对齐 pg-ddl 直觉) - mongo:
insertMany(对齐 mongo-crud) -
--dry-run只 parse + validate,不连库
6. 测试(testing-essentials、node-test)
- 至少 3 个 node:test:
validate合法/非法 JSON、dry-run 不调用 pool - mock 驱动或 stub 模块,避免 CI 强依赖真实 DB
7. 开发体验(nva-watch)
- (选做)chokidar 监听
data/,变更 stderr 提示重新 validate
必走流程
1. git checkout -b practice/track-import-你的名字
2. 从 outline 与 nva-intro 对齐 scope
3. 先 validate + dry-run,再接 DB
4. node:test 绿后再 npm link 试跑
5. commit:清晰 message;PR 附 Test plan
自检清单
- 文档内至少 5 条指向本 track 或关联 track 的
/tracks/...链接 - 无
.env、连接串进 Git - 我能解释 何时用 CLI 脚本、何时用 nest-db API
与路线图
完成后回到 dev / full-stack 路线图,勾选 Node CLI、npm packages、working-with-databases 相关节点。API 层继续 nestjs-essentials;关系型深入 postgresql-essentials,文档库深入 mongodb-essentials。
小结
glob 读入、validate 守门、dry-run 安心、驱动写库、测试兜底——Node 进阶的合格 CLI 不过如此。 本 track 完结;日常 API 开发请回到 nodejs-essentials 与 Nest 栈。