chore(docs): eslint migration + extractor updates

Migrate docs to eslint flat config (build-script console override); doc
extractor points at configs/eslint.
This commit is contained in:
2026-06-07 16:30:14 +07:00
parent 23a2795523
commit 96ac895f7a
30 changed files with 1934 additions and 864 deletions
+25 -7
View File
@@ -6,8 +6,8 @@
* pages/components via `import metadata from '#docs/metadata'`.
*/
import { defineNuxtModule, addTemplate, createResolver } from '@nuxt/kit';
import { resolve, dirname } from 'node:path';
import { addTemplate, createResolver, defineNuxtModule } from '@nuxt/kit';
import { dirname, resolve } from 'node:path';
import type { DocsMetadata } from './types';
export default defineNuxtModule({
@@ -81,16 +81,26 @@ declare module '#docs/metadata' {
},
});
// Register prerender routes from metadata
// Register prerender routes from metadata — one detail route per documented
// leaf, regardless of package kind (api items / components / guide sections).
nuxt.hook('prerender:routes', async ({ routes }: { routes: Set<string> }) => {
if (metadata.packages.length === 0) return;
for (const pkg of metadata.packages) {
routes.add(`/${pkg.slug}`);
for (const category of pkg.categories) {
for (const item of category.items) {
routes.add(`/${pkg.slug}/${item.slug}`);
}
if (pkg.kind === 'api') {
for (const category of pkg.categories)
for (const item of category.items)
routes.add(`/${pkg.slug}/${item.slug}`);
}
else if (pkg.kind === 'components') {
for (const component of pkg.components)
routes.add(`/${pkg.slug}/${component.slug}`);
}
else if (pkg.kind === 'guide') {
for (const section of pkg.sections)
routes.add(`/${pkg.slug}/${section.slug}`);
}
}
@@ -105,6 +115,7 @@ declare module '#docs/metadata' {
const entries: string[] = [];
for (const pkg of metadata.packages) {
// api items
for (const cat of pkg.categories) {
for (const item of cat.items) {
if (item.hasDemo) {
@@ -113,6 +124,13 @@ declare module '#docs/metadata' {
}
}
}
// component groups
for (const component of pkg.components) {
if (component.hasDemo) {
const demoPath = resolve(ROOT, component.sourcePath, 'demo.vue');
entries.push(` '${pkg.slug}/${component.slug}': defineAsyncComponent(() => import('${demoPath}')),`);
}
}
}
if (entries.length === 0) {