CI とその他の統合の設定
ビルド時にフォーマットの差異がある場合に失敗させるために、あなたの CI パイプラインで Oxfmt を実行するように設定し、それが推奨されます。
このページでは、プリコミットフックなど、追加で含めたい統合についても説明しています。
CI
GitHub Actions
すでに package.json に fmt:check スクリプトがなければ、最初に以下を追加します:
{
"scripts": {
"fmt:check": "oxfmt --check"
}
}その後、GitHub Actions ワークフローにジョブを追加します:
name: CI
on:
pull_request:
push:
branches: [main]
permissions: {}
jobs:
format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v6
with:
node-version: lts/*
cache: pnpm
# または yarn、npm など
- run: pnpm install --frozen-lockfile
- run: pnpm run fmt:checkフォーマットの自動修正
プルリクエストを開く前に頻繁に Oxfmt を実行することを忘れてしまう場合、またはプリコミットフックを使用できない場合は、autofix.ci を使って CI ワークフローに自動修正ステップを追加できます。
詳細については https://autofix.ci/setup をご参照ください。また、関連する GitHub App もインストールする必要があります。
以下の例は使用できる GitHub Actions ワークフローです:
name: autofix.ci # 必ずこの名前を使用する必要あり
on:
pull_request:
push:
branches: ["main"]
permissions:
contents: read
jobs:
autofix:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v6
with:
node-version: lts/*
cache: pnpm
# または yarn、npm など
- run: pnpm install --frozen-lockfile
# Oxfmt を実行して変更を書き込みます。差分があれば autofix.ci がコミットします。
# まだ `package.json` に `fmt` スクリプトがなければ、必ず追加してください。
- run: pnpm run fmt
# メモ: このアクションにはバージョン番号ではなく最新の SHA ハッシュを使用することを強く推奨します。(詳細は https://autofix.ci/setup 参照)
- uses: autofix-ci/action@1.3.2GitLab CI
GitLab CI を使用している場合、CI パイプラインの一部としてコードフォーマットを強制的に適用できます。
まず、package.json に fmt:check スクリプトがなければ、以下を追加します:
{
"scripts": {
"fmt:check": "oxfmt --check"
}
}その後、.gitlab-ci.yml にジョブを追加し、すべてのコードが適切にフォーマットされているかチェックします:
oxfmt:
image: node:lts
stage: test
before_script:
# または pnpm、yarn など
- npm install
script:
- npm run fmt:checkパッケージマネージャーのキャッシュを追加することで、インストールを高速化できる可能性があります。
プリコミットフック
ステージされたファイルを自動フォーマットするには、oxfmt --no-error-on-unmatched-pattern を使用します。これは対応するすべてのファイルをフォーマットし、一致するファイルがない場合(たとえば、ステージされたのは Ruby ファイルのみの場合)にエラーを回避します。
ファイルを書き込まずにフォーマットを確認するには --check オプションを使用します。
lint-staged 用に package.json に以下を追加します:
{
"lint-staged": {
"*": "oxfmt --no-error-on-unmatched-pattern"
}
}依存関係のインストール時に自動的に git フックをインストールするには、husky を併用することも検討してください。
