Skip to content

CI とその他の統合の設定

ビルド時にフォーマットの差異がある場合に失敗させるために、あなたの CI パイプラインで Oxfmt を実行するように設定し、それが推奨されます。

このページでは、プリコミットフックなど、追加で含めたい統合についても説明しています。

CI

GitHub Actions

すでに package.jsonfmt:check スクリプトがなければ、最初に以下を追加します:

package.json
json
{
  "scripts": {
    "fmt:check": "oxfmt --check"
  }
}

その後、GitHub Actions ワークフローにジョブを追加します:

.github/workflows/ci.yml
yaml
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 ワークフローです:

.github/workflows/autofix.yml
yaml
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.2

GitLab CI

GitLab CI を使用している場合、CI パイプラインの一部としてコードフォーマットを強制的に適用できます。

まず、package.jsonfmt:check スクリプトがなければ、以下を追加します:

package.json
json
{
  "scripts": {
    "fmt:check": "oxfmt --check"
  }
}

その後、.gitlab-ci.yml にジョブを追加し、すべてのコードが適切にフォーマットされているかチェックします:

.gitlab-ci.yml
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 に以下を追加します:

package.json
json
{
  "lint-staged": {
    "*": "oxfmt --no-error-on-unmatched-pattern"
  }
}

依存関係のインストール時に自動的に git フックをインストールするには、husky を併用することも検討してください。