首页/开发/代码质量与评审速查/markdownlint:Markdown 规范检查
规范与静态检查65 条

markdownlint:Markdown 规范检查

markdownlint 检查 Markdown 结构与风格:MD013(行宽)、MD041(首行须为一级标题)、文件末尾换行等,适合文档仓库批量执行。

markdownlint 是什么

markdownlint 检查 Markdown 的结构与风格:标题层级是否跳级、行宽是否超限、代码块是否标注语言、文件末尾是否只有一个换行。规则用 MD 编号标识,Node 生态里常用 markdownlint-cli2 作为命令行包装。它适合文档仓库批量执行,在 CI 里守住文档的一致性,让目录生成、锚点跳转这类依赖结构的事情不出错。

基本信息

典型规则MD013 行宽 / MD041 首行一级标题 / MD047 文件末尾换行
工具markdownlint(库)、markdownlint-cli2(命令行包装)
配置.markdownlint.json 或 .markdownlint-cli2.jsonc
修复支持 --fix 自动修复部分规则
适用文档仓库、README、团队规范文档

常被触发的规则

  • MD013:行宽超限,中文文档与表格最容易命中
  • MD041:文件首行必须是顶级标题,否则文档目录里显示异常
  • MD040:代码围栏未标注语言,语法高亮与工具解析都失效
  • MD009 / MD012:行尾多余空格、连续多个空行
  • MD024:同一文档内出现重复标题,锚点链接会指向第一个
  • MD033:内联 HTML,多数文档站的渲染策略下不生效

用法与配置

用法与配置
npx markdownlint-cli2 "docs/**/*.md"       # 批量检查
npx markdownlint-cli2 --fix "docs/**/*.md"  # 自动修复可修项
markdownlint docs/                          # 旧版 CLI 用法

# .markdownlint.json 片段
# {
#   "default": true,
#   "MD013": { "line_length": 120, "tables": false },
#   "MD033": false
# }

常用规则速查

规则检查内容常见处理
MD013行宽(默认 80)放宽阈值,表格单独豁免
MD041首行一级标题补一行 H1
MD040围栏代码块语言补 bash / json 等
MD047文件末尾换行交给 --fix 自动补
MD024重复标题允许不同层级重复或改写标题
MD033内联 HTML按文档站策略决定是否关闭
中文文档的常见做法是把 MD013 的 line_length 放宽并关闭对表格的检查,而不是整条关掉:一旦整条禁用,超长段落会重新出现且无人提醒,评审时才慢慢发现。
让编辑器插件与 CI 共享同一份配置能减少摩擦:本地保存即提示,CI 只做兜底。两份规则不一致时,作者会在提交后才发现问题,返工成本明显上升。

易错点

  • 行宽规则与表格冲突:整体关闭 MD013 而不是对表格放宽,长段落随即失控
  • 把所有规则关掉只查错别字:标题跳级等结构问题长期存在,目录生成出错
  • 本地与 CI 配置不一致:提交后才发现违规,反复返工
  • 自动修复后不检查 diff:--fix 可能改动列表缩进与代码块内容,需人工确认
  • 把自动生成或第三方文档排除在外:最易出错的目录长期无人检查,问题越积越多

数据来源与参考

  • markdownlint 官方仓库(github.com/DavidAnson/markdownlint)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌