在 CircleCI 上使用 textlint 和 reviewdog 校对文本

发布: (2026年3月15日 GMT+8 19:09)
2 分钟阅读
原文: Dev.to

Source: Dev.to

概览

使用 textlintreviewdogCircleCI 为存放在 GitHub 仓库中的文档实现日文文本校对自动化。

目录结构

.
├── .circleci
│   └── config.yml
├── README.md
├── documents
│   ├── はじめに.md
│   └── おわりに.md
├── images
├── .textlintrc
├── package-lock.json
└── package.json

初始设置

npm init -y

安装 textlint 及所需规则

npm install --save-dev \
  textlint \
  textlint-rule-preset-ja-spacing \
  textlint-rule-preset-ja-technical-writing \
  textlint-rule-spellcheck-tech-word \
  textlint-rule-preset-jtf-style \
  textlint-rule-preset-japanese

.textlintrc 配置

{
  "filters": {},
  "rules": {
    "preset-ja-spacing": true,
    "preset-ja-technical-writing": true,
    "preset-japanese": true,
    "preset-jtf-style": true,
    "spellcheck-tech-word": true
  }
}

CircleCI 配置(.circleci/config.yml

version: 2
jobs:
  build:
    docker:
      - image: vvakame/review:latest
        environment:
          REVIEWDOG_VERSION: latest
    steps:
      - checkout
      - restore_cache:
          keys:
            - npm-cache-{{ checksum "package-lock.json" }}
      - run:
          name: Setup
          command: npm install
      - save_cache:
          key: npm-cache-{{ checksum "package-lock.json" }}
          paths:
            - ./node_modules
      - run:
          name: Install reviewdog
          command: |
            curl -sfL https://raw.githubusercontent.com/reviewdog/reviewdog/master/install.sh \
            | sh -s $REVIEWDOG_VERSION
      - run:
          name: Lint Japanese documents
          command: |
            "$(npm bin)/textlint" -f checkstyle documents/*.md | tee check_result
      - run:
          name: Reviewdog
          command: |
            if [ -n "$REVIEWDOG_GITHUB_API_TOKEN" ]; then
              cat check_result | ./bin/reviewdog -f=checkstyle -name=textlint -reporter=github-pr-review
            fi
          when: on_fail

工作原理

  1. textlint 扫描 documents/ 目录下的所有 Markdown 文件,并以 Checkstyle 格式输出结果。
  2. 输出保存到 check_result
  3. reviewdog 读取 check_result,并在关联的 GitHub Pull Request 上发布评论(前提是已设置 REVIEWDOG_GITHUB_API_TOKEN 环境变量)。

参考资料

0 浏览
Back to Blog

相关文章

阅读更多 »