2021年3月25日木曜日

Re:VIEW の textlint 環境を整える

 Zenn で GitHub 管理された記事投稿ができるようになり、GtiHub Actions で textlint をかける CI 環境を作りましたが、これを技術書典などの書籍作成用リポジトリにも設定したいと思います。

textlint 環境の構築

npm で textlint と Re:VIEW 用のプラグインをインストールします。

npm install textlint
npm install textlint-plugin-review
npm install textlint-rule-preset-ja-technical-writing
npm install textlint-rule-preset-ja-spacing
npm install textlint-filter-rule-allowlist

それぞれのリポジトリはこちら

https://github.com/textlint/textlint
https://github.com/orangain/textlint-plugin-review
https://github.com/textlint-ja/textlint-rule-preset-ja-technical-writing
https://github.com/textlint-ja/textlint-rule-preset-ja-spacing
https://github.com/textlint/textlint-filter-rule-allowlist

.textlintrc をルートに配置
  {
  "plugins": {
    "@textlint/markdown": {
      "extensions": [".md"]
    },
    "review-starter": {
      "extensions": [".re"]
    }
  },
  "rules": {
    "preset-ja-technical-writing": {
      "sentence-length": false
    },
    "preset-ja-spacing": {
      "ja-space-between-half-and-full-width": {
        space: "always",
        exceptPunctuation: true,
      },
      "ja-space-around-code": {
        "before": true,
        "after": true
      }
    }
  },
  "filters": {
      "allowlist": {
        "allow": [
          "/(.|)[0-9]+(ヶ|か)月/",
          "/(.|)[0-9,]+(分|つ|回|時)/",
        ]
      }
  }
}
  

.textlintrc を配置したら
npx textlint <path> で検証できます。

例)

npx textlint -f unix ci-dex/contents/*.re
/ci-dex/contents/c000-preface.re:10:39: 弱い表現: "思います" が使われています。 [Error/ja-technical-writing/ja-no-weak-phrase]
ci-dex/contents/c000-preface.re:29:7: 原則として、全角文字と半角文字の間にスペースを入れます。 [Error/ja-spacing/ja-space-between-half-and-full-width]

GitHub Actions の設定

reviewdog の textlint action があるのでそれを使うと簡単に対応できます。
https://github.com/tsuyoshicho/action-textlint
yaml は以下のようになります。

name: 'Run textlint with reviewdog'
on: [pull_request]
jobs:
  textlint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: textlint-books
        uses: tsuyoshicho/action-textlint@v1
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          reporter: github-pr-review
          textlint_flags: "."  
  
VS Code 環境の設定

vscode-textlint 拡張機能をインストールすると VS Code エディタ上で textlint の指摘を確認できます。

ただし、こちらの拡張機能と「Re:VIEW」拡張機能の相性が悪いようで、「Re:VIEW」拡張機能を有効にしていると textlint の指摘が出てこなくなるので注意してください。
(類似の「yet another Re:VIEW」「Re:VIEW Starter Syntax Highlight」でも同様)


textlint よりも Re:VIEW のシンタックスハイライトがあったほうが便利なので、結局 textlint は CI で確認するようにしました。

Re:VIEW Starter に対応する

自分が執筆する際は Re:VIEW ではなく Re:VIEW Starter を使用しているので、そちらの構文に対応した「textlint-plugin-review-starter」を作成し、リリースしています。
https://github.com/srz-zumix/textlint-plugin-review-starter
https://www.npmjs.com/package/textlint-plugin-review-starter

textlint-plugin-review と同様に npm install すれば使用できます。
textlint-plugin-review にはなかった $/| のフェンス記法と、インラインコマンドの入れ子に対応しています。
もちろん、Re:VIEW Starter 独自のフォーマットにも対応しています。

なにか不具合あれば issue に投げてくださいmm

今回は以上です。では。

0 件のコメント:

コメントを投稿