長文の執筆をする際にテキスト校正を自動化しておきたかったのでやってみた。
テキストはGithub上で管理するようにしており、ディレクトリ構成は以下のようになっている。
├── .circleci
│ └── config.yml
├── README.md
├── documents
│ ├── はじめに.md
│ └── おわりに.md
├── images
├── .textlintrc
├── package-lock.json
└── package.json
初期設定。
npm init -y
textlintと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
}
}
Githubでrepo
だけを許可したトークンを発行して、REVIEWDOG_GITHUB_API_TOKEN
という名前で環境変数をセットしておく。
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 for ja
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
textlintに引っかかるとreviewdogがコメントしてくれる。