ranklint 1.1.0: что изменилось
Дата: 2026-10-11
Новое
- @ranklint/checks, @ranklint/preset-default: New rule links:no-utm-internal (warn) flags internal links that carry UTM or click-id parameters (utm_*, gclid, gbraid, wbraid, fbclid, yclid, msclkid, _gl, mc_cid, mc_eid) (9172e75)
- @ranklint/cli, @ranklint/reporters: New
ranklint dashboardcommand anddashboard()reporter: a single-file HTML monitoring dashboard for GitLab or GitHub Pages built from the stored monitor reports. It shows the latest run with deltas against the previous one, new and fixed issues by rule with errors first, trends for errors, warnings, Lighthouse scores and CrUX field data, Lighthouse by page and the history of every run with a per-run report inruns/<date>.html. An issue explorer groups problems by rule or by page: every page gets a checklist of what to fix with the suggestion and docs link for each rule, the affected elements and a NEW mark, and a "Fix once" block lists issues repeated across a section or the whole site that are fixed in one template. Optional branding with--logo,--brand-nameand--accent: your logo top left, one accent color for the whole page and a "powered by ranklint" line in the side panel. A--run-urlbutton opens the CI pipeline form. The html reporter (--reporter html,--html-output) gets the same design: issues grouped by page by default, the explorer with filters and a Web Vitals section with CrUX ratings and a Lighthouse table. Pages embed their data and script and load the brand fonts from Google Fonts, falling back to system fonts offline. (e35b41d) - @ranklint/core: Export
isTrackingParam(name)from@ranklint/core: true forutm_*andgclid,gbraid,wbraid,fbclid,yclid,msclkid,_gl,mc_cid,mc_eid.normalizeUrlandlinks:no-utm-internalshare this list. (1f669ea)
Исправления
- @ranklint/checks, @ranklint/cli, @ranklint/core: The crawler no longer treats a page that redirects to another origin as a page of the site: it is counted in
crawlStats.external, its links are not crawled and page checks don't run on its HTML. Links of a page redirected inside the site resolve against the final URL, and several URLs redirecting to one final URL give a single snapshot, reported under the final URL. An entry URL redirecting to another origin (example.com→www.example.com,http→https) is reported as acrawl:entry-redirecterror instead of an empty audit.PageSnapshotgets an optionalfinalUrl, filled byHttpFetcherandPlaywrightFetcher.links:no-broken,links:no-redirect-chain,links:permanent-redirects,links:no-utm-internal,links:no-orphansandcanonical:no-chainresolve relative URLs againstfinalUrlwhen it is set. (41da7b8) - @ranklint/checks: Collapse line breaks and repeated spaces in H1 and title text:
indexability:ssr-contentno longer reports multi-line headings as client-side only,headings:h1-lengthandmeta:title-lengthmeasure the normalized text, andheadings:unique-h1,meta:no-duplicate-titleandmeta:no-duplicate-descriptiongroup duplicates that differ only in whitespace.http:no-soft-404matches not-found titles split across lines and shows the normalized title in the message. (98e44d7) - @ranklint/checks: i18n:no-locale-leak ignores subtrees whose lang attribute differs from the page language (660be37)
- @ranklint/checks, @ranklint/reporters:
links:no-utm-internalandimages:*escape"and\in the attribute value of the issue selector.markdownDiff, the monitor dashboard and Slack/Telegram notifications list new and fixed issues by severity (error, warn, info), so errors are not cut off by the item limit. (1f669ea) - @ranklint/checks, @ranklint/cli, @ranklint/core: Page checks skip 4xx/5xx snapshots, so an HTML 404 behind a broken link no longer raises canonical or duplicate title issues; the broken link itself is still reported by
links:no-broken. Newcrawl.respectRobotsoption (defaulttrue): the crawler loads<origin>/robots.txtonce and does not crawl links disallowed for*or for the group matchingcrawl.userAgent; entry URLs are always crawled and the count is reported ascrawlStats.disallowedand in the crawl log. The robots.txt parser moved to@ranklint/core(parseRobotsTxt,isPathDisallowed, still re-exported by@ranklint/checks) and now supports Google*and$patterns, percent-encoded and non-ASCII paths and most specific user agent group selection. robots.txt is read from the raw response (ssrHtml) so browser-rendered fetchers no longer hide its rules from the crawler androbots:*checks. Entry URLs are exempt from robots.txt,sitemap+samplesamples are not. Newlighthouse.urlsoption pins the exact list of paths or URLs measured by Lighthouse inauditand thelighthousecommand; an empty list counts as not set.images:*issues fordata:images use a structuralnth-of-typeselector instead of embedding the data URI. (4cab41d) - @ranklint/checks, @ranklint/core:
normalizeUrlstrips tracking params (utm_*,gclid,gbraid,wbraid,fbclid,yclid,msclkid,_gl,mc_cid,mc_eid), so the crawler no longer visits/a?utm_source=xas a separate page.links:no-broken,links:no-redirect-chainandlinks:permanent-redirectscheck such links once and still report the original href. (d1c054c) - @ranklint/core: Route patterns ending with
/**match their prefix as a glob, so/*/market/**covers/en/marketand/en/market/cars(81088bc)
Главное
В ranklint 1.1.0 у режима мониторинга появилось место, где удобно смотреть результаты. ranklint dashboard собирает из сохранённых отчётов один HTML-файл для GitLab или GitHub Pages: последний прогон с дельтами, новые и исправленные проблемы с ошибками сверху, тренды ошибок, баллов Lighthouse и полевых данных CrUX, отчёт за каждую дату и обозреватель проблем, где у каждой страницы свой список того, что исправить. Блок «Fix once» собирает проблемы, которые повторяются на разделе или по всему сайту, а --logo, --brand-name и --accent добавляют ваш бренд. Краулер теперь учитывает robots.txt, идёт до финального URL после редиректов, пропускает страницы, которые уводят с сайта, и не плодит дубли из-за трекинг-параметров; lighthouse.urls закрепляет Lighthouse за ключевыми страницами, а новое правило links:no-utm-internal находит внутренние ссылки с UTM-метками.