Codo API 参考:3行代码把文档生成嵌入你的构建工具链
【免费下载链接】codocodo: Codo 是一个 CoffeeScript API 文档生成器,类似于 YARD,专注于 CoffeeScript 类语法的文档生成。项目地址: https://gitcode.com/gh_mirrors/cod/codo
Codo是一款专注于 CoffeeScript 类语法的 API 文档生成器,它能把源码里的注释解析成可浏览的文档站点。除了命令行之外,Codo 还内置了轻量Codo API,只需 3 行代码就能把「文档生成 + 覆盖率检查」嵌入你的构建工具链,让每次编译都顺手产出一份完整文档。本文带你从零跑通这 3 行,并讲清背后的配置与常见坑。
为什么要把 Codo 文档生成嵌入构建流程
手动敲codo命令很容易忘,而文档一旦落后,代码库就会「注释与实现脱节」。把 Codo 接进构建/CI 后能得到两个直接收益:
- 随构建自动产出文档:
npm run build顺带生成 HTML 文档,无需额外记忆命令。 - 强制文档覆盖率:通过
min-coverage设定门槛,覆盖率不达标就让构建失败,逼着团队补齐注释。
Codo 的命令行选项(见 README.md)在 API 里几乎都能原样复用,所以迁移成本很低。
3 行代码跑通 Codo API:最小嵌入
Codo 把 API 入口封装成了Command类,你只需要require、new、调用generate:
CodoCLI = require 'codo/lib/command.coffee' codoCLI = new CodoCLI() codoCLI.generate "src", { "output": "./doc" }, (exitCode) -> process.exit exitCode对应说明见 README.md,核心实现在 lib/command.coffee。三行分别做了三件事:
- 加载 API 入口
Command(lib/command.coffee)。 - 实例化,拿到
generate能力。 - 传入源目录、选项对象、完成回调,开始生成。
generate(dir, options, cb)的第一个参数是要扫描的根目录,第二个是配置对象,第三个是回调——回调里的exitCode在覆盖率不达标时为1,正常时为undefined。这正是接入 CI 的判断依据。
💡 项目名、README、额外文件都可以自动探测,逻辑在 lib/codo.coffee 的
parseProject里。
看懂 generate:Codo API 的三步内部流程
generate看似一行调用,内部其实串起了三个清晰阶段(见 lib/command.coffee):
- 解析源码→ 调用
Codo.parseProject,递归扫描目录、识别类/方法/Mixin/常量(解析与链接见 lib/environment.coffee)。 - 编译主题→ 非测试模式下调用
@theme.compile(environment),渲染出 HTML、样式与模糊搜索数据(默认主题见 themes/default/lib/theme.coffee)。 - 统计覆盖率→ 汇总类、Mixin、方法,比对
min-coverage,决定回调返回成功还是失败。
对新手来说,记住「解析 → 渲染 → 校验」这条链路,就能快速定位问题出在哪个环节。
配置 Codo 生成参数:options 速查
options是一个普通对象,字段名与命令行选项一致。常用项如下:
| 选项 | 作用 | 默认 |
|---|---|---|
output | 输出目录 | ./doc |
name | 项目名 | 自动探测 |
readme | 用作首页的 README 文件 | 自动探测 |
theme | 主题名 | default |
min-coverage | 最低文档覆盖率(%) | 0 |
test | 只校验不产出文件(干跑) | false |
quiet/verbose | 抑制告警 / 显示解析错误 | false |
⚠️ 两个高频坑:
- 选项名不是驼峰:要写
min-coverage,而不是minCoverage。 - API 会忽略
.codoopts:走 API 时只使用全局默认值,项目本地默认文件不生效,请在options里显式传全。
完整选项定义见 lib/command.coffee 与主题扩展项 themes/default/lib/theme.coffee。
用 min-coverage 守住文档底线(CI 集成最佳实践)
想让「文档不达标就红」,在 CI 里用test: true干跑即可,不产文件、只判覆盖率:
codoCLI.generate "src", { test: true, "min-coverage": 90 }, (exitCode) -> if exitCode throw new Error "文档覆盖率低于 90%,构建失败"这段写法与官方测试完全一致(min-coverage: 90低于阈值时回调1),可直接对照 spec/lib/api_spec.coffee。
把它放进package.json的脚本,就能让任何支持 npm 脚本的构建工具(Grunt / Gulp / CI)零改造接入。
在 Grunt / Gulp / CI 中接入 Codo API
接入思路统一为「在任务里 new 一个 CLI 并调用generate」。要点:
- Grunt:注册一个自定义任务,任务体内同步等待回调,非零
exitCode时调用done(new Error(...))让 Grunt 报错。 - Gulp:把
generate包成 Promise,覆盖率失败即reject,串进gulp.series。 - CI:优先用
{ test: true, "min-coverage": n }干跑,既省空间又能在流水线里硬性把关。
无论哪种工具,判断成功的唯一标准就是回调里的exitCode是否为真值——这一行为由 lib/command.coffee 的覆盖率比对逻辑保证。
接入 Codo API 的常见问题
- 生成的文档在哪?看
output,默认./doc,改它即可指到任意静态目录。 - 为什么没看到
.codoopts里写的参数?因为 API 模式忽略项目本地默认文件,请把选项显式写进options。 - 覆盖率老是差一点?用
undocumented: true先列出未文档化的对象,补齐注释再提门槛。 - 只想要覆盖率检查、不要 HTML?传
test: true即可干跑,不写任何输出文件。
示例代码可参考自带模板 spec/_templates/example/src/animal.coffee,它展示了标准的 Codo 注释写法。
小结
Codo API 的核心就一句话:new CodoCLI()后调用generate(dir, options, cb),用回调里的exitCode判断构建成败。把它接进构建工具链,你得到的不只是自动文档,更是「文档覆盖率不达标就构建失败」的质量闸门。建议先从min-coverage: 80起步,逐步抬高,让文档和代码一起成长。
【免费下载链接】codocodo: Codo 是一个 CoffeeScript API 文档生成器,类似于 YARD,专注于 CoffeeScript 类语法的文档生成。项目地址: https://gitcode.com/gh_mirrors/cod/codo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考