Nuxt Link Checker v5.0.0
Introduction
The v5 release adds ESLint integration for instant broken link feedback in your editor, migrates DevTools to a shared layer, and bumps internal dependencies.
⚠️ Breaking Changes
Site Config v4
Nuxt Site Config is a module used internally by Nuxt Link Checker.
The major update to v4.0.0 shouldn't have any direct effect on your site, however, you may want to double-check the breaking changes.
DevTools Migration
The DevTools client now uses nuxtseo-layer-devtools, a shared layer used across all Nuxt SEO modules. This means the DevTools panel is now consistent across modules and maintained in one place. You only need to act if you were importing DevTools internals directly.
🔗 ESLint Integration
Broken links are typically only caught at build time or during development server navigation. The new ESLint integration gives you instant feedback directly in your editor by validating relative URLs against your app's known routes and sitemap data.
link-checker/valid-route
Checks that relative URLs match a known vue-router route pattern. Uses radix3 for dynamic route matching and fuse.js for "did you mean?" typo suggestions.
Severity: error
<!-- ✅ /about exists as a page -->
<NuxtLink to="/about" />
<!-- ✅ matches /blog/:slug dynamic route -->
<NuxtLink to="/blog/my-post" />
<!-- ❌ no route matches /abot -->
<NuxtLink to="/abot" />link-checker/valid-sitemap-link
Checks that relative URLs exist in the sitemap. For dynamic routes, warns when sibling URLs exist in the sitemap but the linked URL does not.
Severity: warn
<!-- ✅ /blog/hello-world is in the sitemap -->
<NuxtLink to="/blog/hello-world" />
<!-- ⚠️ /blog/typo matches /blog/:slug but isn't in sitemap -->
<NuxtLink to="/blog/typo" />What Gets Checked
Both rules scan for relative URLs in:
- Vue templates:
<NuxtLink to="...">,<RouterLink to="...">,<a href="..."> - TypeScript/JavaScript:
navigateTo('...'),router.push('...'),router.replace('...') - Markdown:
[text](/url)link syntax (via processor)
External URLs, anchors, mailto/tel links, and dynamic bindings are automatically skipped.
Zero Config with @nuxt/eslint
If you're using @nuxt/eslint, Nuxt Link Checker automatically registers both rules via the eslint:config:addons hook. Zero-config.
For manual setup, import the standalone export:
import linkCheckerPlugin from 'nuxt-link-checker/eslint'
export default [
{
files: ['**/*.vue', '**/*.ts'],
plugins: {
'link-checker': linkCheckerPlugin,
},
rules: {
'link-checker/valid-route': 'error',
'link-checker/valid-sitemap-link': 'warn',
},
},
]See the ESLint Integration guide for full details including markdown support, skipping links, and configuration options.