🤖

zennのコンテンツ管理しているgitリポジトリのファイル群をdprintでフォーマットする

2022/05/10に公開

github のリポジトリで管理するようにしている zenn のコンテンツのmarkdownを一定のフォーマットに揃えたいので dprint でフォーマットするようにしてみる。dprint は Rust 製のコードフォーマットツール。

https://dprint.dev/

インストール

さまざまな形式でインストール可能になっている。ここでは zennのコンテンツを置いているgithub のリポジトリがpackage.jsonをすでに持っていることもありnpmパッケージのdprintをインストールする。

$ npm i -E -D dprint

また、VSCode でフォーマットを効かせるために dprint の VSCode のプラグインをインストールする。
https://github.com/dprint/dprint-vscode

セットアップ

dprint initで利用するプラグインの選択を行うと設定ファイルとなるdprint.jsonが選択した内容に従って作成される。
markdownに限定する必要もないのでデフォルトの選択のままで作成する。

$ npx dprint init

Select plugins (use the spacebar to select/deselect and then press enter when finished):
 * dprint-plugin-typescript
 * dprint-plugin-json
 * dprint-plugin-markdown
 * dprint-plugin-toml

Created ./dprint.json

If you are working in a commercial environment please consider sponsoring dprint: https://dprint.dev/sponsor

後からプラグインを追加する場合にはaddコマンドを利用する。

$ dprint config add dprint/dprint-plugin-typescript

VSCodeの設定

VSCodeで保存時にdprintのフォーマットが実行されるよう.vscode/settings.jsonに設定を追加する。

{
  "dprint.path": "./node_modules/dprint/dprint",
  "editor.defaultFormatter": "dprint.dprint",
  "editor.formatOnSave": true
}

npmパッケージで dprintをインストールしているので、実行ファイルのパスdprint.pathとして./node_modules/dprint/dprint./node_modules/.bin/dprintの方ではなさそう)を指定する必要がある。

CI

dprintでのフォーマットチェックのタイミングとしてはCIで都度実施するようにしたい。Github Actionsで行うようにしたいがdprintのGithub Actionsがあるのでそれを利用する。
https://github.com/marketplace/actions/dprint-check-action

Github Actionsのworkflowのファイルにdprintのチェックを追加するだけで良い。

jobs:
  style:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: dprint/check@v2.0

まとめ

dprintをフォーマットツールとして導入した。これによってVSCodeでファイル保存時にフォーマットがかかり、CIでのフォーマットチェックも行われるようになった。
なお、markdownプラグインの設定に関してはここでは特に行わないけども https://dprint.dev/plugins/markdown/config/ に記載の通り行幅や改行種別などの指定が可能(他のプラグインも同様)ではある。

GitHubで編集を提案

Discussion