📝
dusterを使ってLaravel用コードフォーマットCIを構築する
概要
dusterというLaravelに特化したコードフォーマットライブラリを使って、GitHub ActionsとhuskyによるコードフォーマットCIを導入する
dusterとは
Tighten社が公開しているLaravel用コードフォーマットライブラリ
デフォルトで適用されるコードスタイル
ここ人によって揺れるよな〜という部分を統一してくれる印象です。
手順
1. dusterのインストール
composer require tightenco/duster --dev
2. GitHub Actionsワークフローファイルの生成
./vendor/bin/duster github-actions
What is the name of your primary branch? [main]:
> main
Which GitHub action would you like? [Lint only]:
[0] Lint only
[1] Fix and commit
[2] Fix, commit, and update .git-blame-ignore-revs
> 2
The resulting commit will stop any currently running workflows and will not trigger another.
Checkout Duster's documentation for a workaround.
Do you wish to continue? (yes/no) [yes]:
> yes
Success GitHub Actions added
以下ファイルが生成されます。
.github/workflows/duster-fix-blame.yml
name: Duster Fix
# Commits made in here will not trigger any workflows
# Checkout Duster's documentation for a workaround
on:
push:
branches: [ main ]
pull_request:
jobs:
duster:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
- name: "Duster Fix"
uses: tighten/duster-action@v3
with:
args: fix
- uses: stefanzweifel/git-auto-commit-action@v5
id: auto_commit_action
with:
commit_message: Dusting
commit_user_name: GitHub Action
commit_user_email: actions@github.com
- name: Ignore Duster commit in git blame
if: steps.auto_commit_action.outputs.changes_detected == 'true'
run: echo ${{ steps.auto_commit_action.outputs.commit_hash }} >> .git-blame-ignore-revs
- uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: Ignore Dusting commit in git blame
commit_user_name: GitHub Action
commit_user_email: actions@github.com
※ push
, pull_request
の対象ブランチは適宜変更する
3. huskyの導入
./vendor/bin/duster husky-hooks
Which Husky hook would you like? [Lint only]:
[0] Lint only
[1] Fix and commit
> 1
INFO Installing and building Node dependencies.
.husky
ディレクトリ、lint-staged.config.js
が生成される
lint-staged.config.js
export default {
"**/*.php*": [
"vendor/bin/duster fix"
]
}
※ ローカルコミット時にフォーマット対象にするファイルや実行コマンドを適宜指定する
(optional) tailwindcssクラスの並び順フォーマット設定
prettierとpluginを使うと実現できる。
手順は以下ブログを参照
参考
以下のLaracasts動画でdusterを知りました
Discussion