zennのコンテンツ管理しているgitリポジトリのファイル群をdprintでフォーマットする
github のリポジトリで管理するようにしている zenn のコンテンツのmarkdownを一定のフォーマットに揃えたいので dprint でフォーマットするようにしてみる。dprint は Rust 製のコードフォーマットツール。
インストール
さまざまな形式でインストール可能になっている。ここでは zennのコンテンツを置いているgithub のリポジトリがpackage.json
をすでに持っていることもありnpmパッケージのdprintをインストールする。
$ npm i -E -D dprint
また、VSCode でフォーマットを効かせるために 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があるのでそれを利用する。
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/ に記載の通り行幅や改行種別などの指定が可能(他のプラグインも同様)ではある。
Discussion