쓰기 환경에textlint를 추가하여 읽기 쉬운 글을 쓰기

개시하다


나는 이전에 조치를 취하기 시작했다는 내용의 기사를 쓴 적이 있다週論.
이 보도는 매주 증량 연구를 하고 논문을 쓰는 방법을 소개했다.
https://zenn.dev/ganariya/articles/weekly-paper-trial
이번에는 이번 주 논의된 환경에서 textlint를 추가하여 Giithub Actions에서 자동으로 lint을 실행하고자 합니다.
제가 참고한 보도를 참고 문헌으로 삼아 보도의 마지막 총결을 하도록 하세요.

주론 환경에서 textlint 추가


다음 창고에textlint가 추가되었습니다.
textlint는 텍스트 파일과 Markdown의 라인을 만드는 도구입니다.
npm에서 규칙과 플러그인을 자유롭게 추가할 수 있습니다.
https://github.com/tsukuba-mas/weekly_report
우선, npm로 필요한 모듈을 추가합니다.
이것은 npm install --save-dev below-packages를 통해 설치할 수 있다.textlint-plugin-latex2d는 textlint에서\LaTeX를 지원하는 플러그인입니다.
또한 prh는 표지의 흔들림을 감지하고 자동으로 수정하는 외부 프로그램 라이브러리입니다.
따라서 textlint-rule-prh는prh와textlint의 인터페이스입니다.
  "devDependencies": {
    "prh": "^5.4.4",
    "textlint": "^11.9.0",
    "textlint-filter-rule-comments": "^1.2.2",
    "textlint-plugin-latex2e": "^1.1.0",
    "textlint-rule-preset-ja-engineering-paper": "^1.0.2",
    "textlint-rule-preset-ja-spacing": "^2.0.2",
    "textlint-rule-preset-ja-technical-writing": "^4.0.1",
    "textlint-rule-preset-jtf-style": "^2.3.8",
    "textlint-rule-prh": "^5.3.0",
    "textlint-rule-spellcheck-tech-word": "^5.0.0"
  }
단, 이것만으로는 lint를 진행할 수 없습니다.
설정 .textlintrc 이 필요합니다.
이하.플러그인과 규칙에서 상세한 설정을 할 수 있습니다.
위클리리포트는 논문 집필 환경이기 때문에 마침표와 쉼표 등에 대한 추가 설정을 진행 중이다.prh 나는 내가 사용하는yaml 파일을 만드는 것이 비교적 좋다고 생각한다.
{
    "plugins": [
        "latex2e"
    ],
    "rules": {
        "preset-ja-spacing": true,
        "preset-ja-technical-writing": {
            "ja-no-mixed-period": {
                "periodMark": "。",
            },
            "max-kanji-continuous-len": false,
            "sentence-length": 100,
        },
        "preset-ja-engineering-paper": true,
        "preset-jtf-style": {
            "1.2.1.句点(。)と読点(、)": false,
            "1.2.2.ピリオド(.)とカンマ(,)": false,
            "4.1.3.ピリオド(.)、カンマ(,)": false
        },
        "prh": {
            "rulePaths": [
                "node_modules/prh/prh-rules/media/WEB+DB_PRESS.yml"
            ]
        },
    },
    "filters": {
        "comments": {
            "enablingComment": "textlint-enable",
            "disablingComment": "textlint-disable"
        }
    }
}
이후 npx textlint main.tex **/**.tex의 명령을 실행할 때.textlintrc를 자동으로 읽어서 잘못된 부분을 표시합니다.
하지만 이 지령을 내릴 때마다 귀찮아서 메이크파일을 만들었어요.make lint를 실행하면 자동으로 lint가 진행됩니다.
MAIN_TEX = main.tex

compile:
	latexmk $(MAIN_TEX)
	rm **/__latexindent_temp.tex
	rm __latexindent_temp.te

.PHONY: install
install:
	npm install
	npm audit fix

.PHONY: lint
lint:
	npx textlint $(MAIN_TEX) **/**.tex

.PHONY: fix-lint
fix-lint:
	npx textlint $(MAIN_TEX) **/**.tex --fix
이후 GiitHub Actions를 추가하여 요청 시 lint 검사를 실시한다.
이쪽의yaml파일은 아래의 보도를 참고하게 해 주세요.
https://zenn.dev/yuta28/articles/blog-lint-ci-reviewdog
name: reviewdog

on:
  pull_request:
    branches:
      - main

jobs:
  reviewdog-check:
    name: reviewdog (check)
    runs-on: ubuntu-latest
    steps:
      - name: Set up reviewdog
        uses: reviewdog/action-setup@v1
        with:
          reviewdog_version: latest
      - name: Set up node
        uses: actions/setup-node@v2
      - name: Checkout
        uses: actions/checkout@v2
      - name: Cache
        uses: pat-s/always-upload-[email protected]
        env:
          cache-name: cache-node-modules
        with:
          path: ~/.npm
          key: node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            node-
      - name: install dependencies
        run: |
          npm install
      - name: Execute textlint
        run: |
          npx textlint -f checkstyle main.tex components/**.tex >> .textlint.log
      - name: Run reviewdog
        if: failure()
        env:
          REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          cat .textlint.log | reviewdog -f=checkstyle -name="textlint" -reporter="github-pr-review"
      - name: Slack Notification
        uses: rtCamp/action-slack-notify@v2
        env:
          SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
          SLACK_USERNAME: weekly-textlint
          SLACK_ICON_EMOJI: ":bell:"

Zenn의 집필 환경에 lint 추가


역시 젠의 집필 환경에서도 린트와 지티허브 액션스가 추가됐다.
자세한 내용은 아래 창고를 참고하세요.
https://github.com/Ganariya/zenn-ganariya
그런데 문제가 생겼어요.
지금까지 나는 textlint를 가입하지 않았고 textlint를 새로 추가한 결과 과거 보도에서 대량의 수정이 있었다.
이 밖에 zenn-ganariya 창고에main 지점의 보호기 rule를 설치했다.
따라서 textlint(ReviewDog)가 통과하지 않으면main으로 통합할 수 없습니다.
그 결과 새로운 기사를 써서 요구를 했더라도 과거 기사에서는 lint error가 병합되지 않는 상태가 됐다.
그래서 나는 지점명과 보도를 함께 놓고 지점명에lint만 붙이고 싶었지만 순조롭게 진행되지 못했다.
나는 나에게 단지 하나의 지점의 이름에lint를 붙일 수 있도록 다시 한 번 조사하고 싶다.

참고 문헌


https://zenn.dev/serima/articles/4dac7baf0b9377b0b58b
https://zenn.dev/yuta28/articles/blog-lint-ci-reviewdog
https://zenn.dev/ks6088ts/articles/20210315-zenn-get-started
https://qiita.com/kn1cht/items/948a051cb374de13f9a7
https://poyo.hatenablog.jp/entry/2020/12/05/110000

좋은 웹페이지 즐겨찾기