igorshubovych/markdownlint-cli

GitHub: igorshubovych/markdownlint-cli

一款用于检查和修复 Markdown 文件格式与风格的命令行工具,帮助团队维护文档的一致性。

Stars: 1057 | Forks: 103

# markdownlint-cli [![GitHub Actions 构建状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/ea44a9902b005950.svg)][actions-url] ## 安装 ``` npm install -g markdownlint-cli ``` 在 macOS 上,你可以通过 [Homebrew](https://brew.sh/) 进行安装: ``` brew install markdownlint-cli ``` ## 使用 ``` markdownlint --help Usage: markdownlint [options] [files|directories|globs...] MarkdownLint Command Line Interface Arguments: files|directories|globs files, directories, and/or globs to lint Options: -V, --version output the version number -c, --config configuration file (JSON, JSONC, JS, YAML, or TOML) --configPointer JSON Pointer to object within configuration file (default: "") -d, --dot include files/folders with a dot (for example `.github`) -f, --fix fix basic issues (does not work with STDIN) -i, --ignore file(s) to ignore/exclude (default: []) -j, --json write issues in json format -o, --output write issues to file (no console) -p, --ignore-path path to file with ignore pattern(s) -q, --quiet do not write issues to STDOUT -r, --rules include custom rule files (default: []) -s, --stdin read from STDIN (does not work with files) --enable Enable certain rules, e.g. --enable MD013 MD041 -- --disable Disable certain rules, e.g. --disable MD013 MD041 -- -h, --help display help for command ``` 或者使用 [Docker](https://www.docker.com) 和 [GitHub Packages](https://github.com/features/packages) 运行: ``` docker run -v $PWD:/workdir ghcr.io/igorshubovych/markdownlint-cli:latest "*.md" ``` ### Glob 匹配 `markdownlint-cli` 支持高级的 glob 匹配模式,例如 `**/*.md` ([更多信息][globprimer])。 在使用 Bash 等 shell 时,可能需要用引号将 glob 模式括起来,以防止它们被 shell 解释展开。 例如,`--ignore *.md` 在调用 `markdownlint-cli` 之前,会被 Bash 展开为 `--ignore a.md b.md ...`,这会导致它只忽略第一个文件,因为 `--ignore` 只接受单个参数(尽管它可以被多次使用)。 将 glob 模式用引号括起来,如 `--ignore '*.md'`,可以将其原样传递而不展开,从而忽略匹配该模式的文件集合。 #### Glob 匹配示例 要检查(lint)Node.js 项目中的所有 Markdown 文件(排除依赖项),可以使用以下命令: Windows CMD:`markdownlint **/*.md --ignore node_modules` Linux Bash:`markdownlint '**/*.md' --ignore node_modules` ### 忽略文件 如果当前文件夹中存在 `.markdownlintignore` 文件,它将按照 [gitignore][gitignore] 的规则来忽略文件和/或目录。 如果提供了 `-p`/`--ignore-path` 选项,则将使用指定的文件来代替 `.markdownlintignore`。 执行顺序如下: - 枚举在命令行上传递的文件/目录/glob 模式 - 应用 `-p`/`--ignore-path`(如果指定)或 `.markdownlintignore`(如果存在)中的排除规则 - 应用所有指定的 `-i`/`--ignore` 选项中的排除规则 ### 修复问题 当指定了 `--fix` 选项时,`markdownlint-cli` 会尝试应用由活动规则报告的所有修复,并报告仍然存在的任何问题。 由于此选项会修改输入文件,建议事先进行备份,或者在源代码版本控制下操作文件,以便在出现不希望的更改时可以撤销。 ## 配置 `markdownlint-cli` 复用了 `markdownlint` 包中的[规则][rules]。 配置以 JSON、JSONC、YAML、INI 或 TOML 文件的形式存储,并采用相同的[配置格式][config]。 一个示例配置文件: ``` { "default": true, "MD003": { "style": "atx_closed" }, "MD007": { "indent": 4 }, "no-hard-tabs": false, "whitespace": false } ``` 更多示例请参见 [.markdownlint.jsonc][markdownlint-jsonc]、[.markdownlint.yaml][markdownlint-yaml]、[test-config.toml](test/test-config.toml) 或 [style 文件夹][style-folder]。 CLI 参数 `--config` 不是必需的。 如果未提供,`markdownlint-cli` 会在当前文件夹中查找 `.markdownlint.jsonc`/`.markdownlint.json`/`.markdownlint.yaml`/`.markdownlint.yml` 文件,或者在当前及所有父文件夹中查找 `.markdownlintrc` 文件。 相关算法在 [`rc` 包页面][rc-standards] 上有详细描述。 请注意,当依赖于在当前或父文件夹中查找名为 `.markdownlintrc` 的文件时,只接受 INI 和 JSON 语法,并且该文件不能带有扩展名。 如果提供了 `--config` 参数,则该文件必须是有效的 JSON、JSONC、JS 或 YAML。 JS 配置文件包含 JavaScript 代码,必须具有 `.js` 或 `.cjs` 文件扩展名,并且必须(通过 `module.exports = ...`)导出如上所示形式的配置对象。 如果你的工作区(_项目_)是 [仅 ESM](_在根 `package.json` 文件中设置了 `"type": "module"`_),那么配置文件**应以 `.cjs` 文件扩展名结尾**。 JS 配置文件可以在内部 `require` 一个或多个 npm 包,以此实现在不同项目间复用配置。 `--configPointer` 参数允许使用 [JSON Pointer][json-pointer] 语法来标识配置对象(如上所述)中的某个子对象。 此参数可与任何配置文件类型结合使用,使得将配置对象嵌套在 `package.json` 或 `pyproject.toml` 等其他文件中成为可能(例如,通过 `/key` 或 `/key/subkey`)。 `--enable` 和 `--disable` 会覆盖配置文件的设置;如果配置文件禁用了 `MD123`,而你传递了 `--enable MD123`,它将被启用。 如果同一个规则同时被传递给 `--enable` 和 `--disable`,它将被禁用。 ## 退出代码 `markdownlint-cli` 返回以下退出代码之一: - `0`:检查成功,没有错误(可能会有警告) - `1`:检查成功,存在错误(可能会有警告) - `2`:无法写入 `-o`/`--output` 输出文件 - `3`:无法加载 `-r`/`--rules` 自定义规则 - `4`:意外问题(例如格式错误的配置) ## 与 pre-commit 结合使用 要将 `markdownlint-cli` 作为 [pre-commit][pre-commit] 工作流的一部分运行,请在项目的 `.pre-commit-config.yaml` 中的 `repos` 列表中添加类似于以下的内容: ``` - repo: https://github.com/igorshubovych/markdownlint-cli rev: v0.48.0 hooks: - id: markdownlint ``` ## 相关链接 - [markdownlint][markdownlint] - 本模块的 API - [markdownlint-cli2][markdownlint-cli2] - 另一种 CLI 实现 - [glob][glob] - 模式匹配实现 - [ignore][ignore] - `.markdownlintignore` 实现 ## 许可证 MIT © Igor Shubovych
标签:Docker, GNU通用公共许可证, Homebrew, lint, Markdown, MITM代理, Node.js, npm, 代码审查, 代码规范, 修复, 前端框架, 威胁情报, 安全防御评估, 开发者工具, 开源, 数据可视化, 文本处理, 暗色界面, 格式化, 网络调试, 自动化, 自定义脚本, 规则, 请求拦截, 静态检查