← 中文资源

简体中文版本

用 Node.js 与 JSON 存储构建持久化待办 CLI

完整的命令行待办管理器:增删查改、过滤、原子写盘与磁盘持久化,每个命令路径都有单元测试。

阅读英文原文

目标

构建一个把任务存进 JSON 文件的待办 CLI,支持 add/list/done/remove/search 及按状态与标签过滤,并在并发或失败写入下绝不损坏存储文件。

要点

三层严格分层:CLI 层只翻译 argv 与输出;service 层是纯函数、不碰磁盘;storage 层独占文件访问并经单一写队列串行化,用临时文件加重命名实现原子写。done 返回 updated/alreadyDone/missing 三组结果,重复与未知 id 都是一等结果。

提示

直接对目标文件 writeFile 存在半写窗口;跨进程安全被明确列为已知局限而非半吊子方案。

验证

npx vitest 三层测试全绿:纯逻辑测试覆盖过滤交叉积,存储测试模拟崩溃后文件仍可解析,CLI 测试以子进程驱动真实二进制断言退出码与 stdout。 项目目录骨架:

todo-cli/
├── bin/todo.js
├── src/
│   ├── commands.js
│   ├── service.js
│   └── storage.js
├── test/
│   ├── service.test.js
│   └── storage.test.js
├── package.json
└── README.md

实施阶段:Storage foundation → Task service → CLI wiring → Tests and hardening。