Skip to content

CI e integrações

Faça sua pipeline rodar o Oxfmt e falhar quando houver divergências de formato.

Esta página também cobre integrações úteis, como hooks pré-commit Git.

CI

GitHub Actions

Adicione o script fmt:check no package.json se ainda não existir:

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

E acrescente um job no fluxo 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

      # Ou yarn, npm etc.
      - run: pnpm install --frozen-lockfile
      - run: pnpm run fmt:check

Corrigir formatação automaticamente

Se faltar rodar Oxfmt antes do PR e hooks não estiverem disponíveis, dá para adicionar passo autofix em CI com autofix.ci.

Veja https://autofix.ci/setup — será preciso instalar o app GitHub correspondente.

Fluxo exemplo:

.github/workflows/autofix.yml
yaml
name: autofix.ci # precisa usar exatamente este nome

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

      - run: pnpm install --frozen-lockfile

      # Oxfmt grava mudanças; autofix.ci comita diffs.
      - run: pnpm run fmt

      # Recomendado: use o SHA mais recente deste action conforme docs.
      - uses: autofix-ci/action@1.3.2

GitLab CI

Adicione fmt:check no package.json:

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

E um job .gitlab-ci.yml:

.gitlab-ci.yml
yml
oxfmt:
  image: node:lts
  stage: test
  before_script:
    - npm install
  script:
    - npm run fmt:check

Cache do gerenciador de pacotes pode acelerar instalações.

Hook pré-commit

Para formatar apenas arquivos em stage:

oxfmt --no-error-on-unmatched-pattern

Formata arquivos suportados sem erro quando nada casa (por exemplo só Ruby em stage).

--check verifica sem gravar.

Com lint-staged, no package.json:

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

Husky ajuda a instalar o hook na instalação de dependências.