Начало работы

Установка

Поставить модуль Nuxt и CLI и запустить первый аудит.

Модуль

npx nuxi module add @ranklint/nuxt

Работает без конфигурации: /sitemap.xml (статические роуты из app/pages/) и /robots.txt (не-prod окружения закрыты от индексации) доступны сразу. Требует Nuxt 4 — при compatibilityVersion < 4 бросает понятную ошибку.

// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@ranklint/nuxt'],
  ranklint: {
    site: { url: 'https://example.com', name: 'Example' },
    sitemap: {
      sources: [
        '/api/seo/urls',
        async () => (await $fetch<string[]>('/api/products')).map(slug => ({ loc: `/p/${slug}` })),
      ],
      cacheTtl: 3600,
    },
    robots: { mode: 'owner' },
    jsonLd: true,
  },
})

Каждый блок отключается через false — выключенный код вообще не регистрируется.

sitemap: { autoRoutes: false } убирает автоматические роуты, собранные из app/pages — используйте его вместе с явными sources, когда роутам нужны локальные префиксы или ручная курация (i18n / multi-app).

Функция-источник сериализуется в серверный бандл через toString(), поэтому обязана быть самодостаточной: Nitro-глобалы ($fetch) доступны, а замыкания на переменные и импорты из nuxt.config — нет.

<script setup>
useJsonLd('Product', {
  name: 'Widget',
  offers: { price: 9.99, priceCurrency: 'USD' },
})

useRanklintIgnore(['headings:single-h1'])
</script>

В dev JSON-LD валидируется по схемам Schema.org (Product, Article, BreadcrumbList, Organization, WebSite) с warn'ами в консоль; в prod валидатор полностью вытряхивается из бандла тришейкингом. Клиентский рантайм модуля — меньше 1 KB gzip.

CLI

npm i -D @ranklint/cli
npx playwright install chromium

ranklint init                                          # сгенерировать ranklint.config.ts
ranklint audit --url https://uat.example.com          # аудит живого сайта
ranklint audit --start .output/server/index.mjs        # или self-contained из сборки

Exit code 1 при error-issues. Репортеры: markdown (по умолчанию), json, junit (--reporter, --output).

Первый шаг после установки это ranklint init: он пишет ranklint.config.ts, печатает сниппет для CI и определяет Nuxt.

Правила настраиваются в ranklint.config.ts с семантикой ESLint — см. Конфигурацию.