Skip to content

CI и другие интеграции

Имеет смысл настроить CI так, чтобы Oxlint запускался и падал при ошибках линтера.

Ниже — git pre-commit и прочие интеграции.

CI

Ниже предполагается, что oxlint уже в devDependencies в package.json и в репозитории есть конфиг Oxlint.

GitHub Actions

Добавьте скрипт lint в package.json, если его ещё нет:

package.json
json
{
  "scripts": {
    "lint": "oxlint"
  }
}

Создайте .github/workflows/oxlint.yml:

.github/workflows/oxlint.yml
yaml
name: Lint

on:
  pull_request:
  push:
    branches: [main]

permissions: {}

jobs:
  oxlint:
    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

      # alternatively use npm install / yarn install here
      - run: pnpm install --frozen-lockfile
      - run: pnpm run lint

Альтернатива — формат github для аннотаций предупреждений/ошибок:

package.json
json
{
  "scripts": {
    "lint:github": "oxlint --format=github"
  }
}

GitLab CI

С --format=gitlab и Code Quality в GitLab можно получить аннотации к merge request.

Скрипт в package.json, пишущий отчёт в файл:

package.json
json
{
  "scripts": {
    "lint:gitlab": "oxlint --format=gitlab > gitlab-oxlint-report.json"
  }
}

Задача в .gitlab-ci.yml — запуск и загрузка отчёта как артефакт Code Quality:

.gitlab-ci.yml
yml
oxlint:
  image: node:lts
  stage: test
  before_script:
    # alternatively use pnpm install / yarn install here
    - npm install
  script:
    - npm run lint:gitlab
  artifacts:
    reports:
      codequality:
        # This is relative to your repository root, so adjust if your repo has a different structure or you put the report in a different location
        - gitlab-oxlint-report.json

Без Code Quality можно просто вызывать oxlint без --format=gitlab.

Если нужны правила с типами — включите их явно; кэшируйте node_modules, чтобы ускорить установку.

Git-хуки

lint-staged

Для JS/TS с lint-staged:

package.json
json
{
  "lint-staged": {
    "*.{js,jsx,ts,tsx,mjs,cjs}": "pnpm run lint"
  }
}

Чтобы хук ставился при установке зависимостей, можно использовать husky.

pre-commit

С pre-commit:

.pre-commit-config.yaml
yaml
repos:
  - repo: https://github.com/oxc-project/mirrors-oxlint
    rev: v0.0.0
    hooks:
      - id: oxlint
        verbose: true

Подставьте актуальную версию вместо v0.0.0.

Прочие интеграции

Unplugin

Поддержка через сторонний пакет

Плагин Vite

Через сторонний пакет