Squidoc

Páginas

@squidoc/plugin-pages permite publicar páginas Astro que no son artículos Markdown: homepages, changelogs, páginas de producto, páginas legales o cualquier ruta estática personalizada.

El starter incluye el plugin. Si lo agregas manualmente:

npx squidoc add plugin @squidoc/plugin-pages

Crear una página

Crea un archivo en pages/:

---
export const squidoc = {
  title: "Changelog",
  description: "Actualizaciones del producto.",
  layout: "page",
};
---

<h1>Changelog</h1>

pages/index.astro se publica como /. pages/changelog.astro se publica como /changelog.

Directorio personalizado

Puedes cambiar el directorio:

plugins: [
  {
    name: "@squidoc/plugin-pages",
    options: {
      pagesDir: "custom-pages",
    },
  },
];

squidoc dev observa el directorio configurado, así que cambios en custom-pages/ regeneran el proyecto interno.

Layouts

Squidoc soporta exactamente dos layouts:

  • page: layout predeterminado para páginas personalizadas. Incluye navbar y footer, pero no sidebar ni árbol del artículo.
  • docs: layout de documentación. Incluye sidebar, selector de versión, árbol del artículo y estilos de contenido.

Si omites layout, Squidoc usa page.

Límites

Las páginas son Astro estáticas. No son API routes, endpoints SSR ni páginas server-only.

No se permiten conflictos de ruta. Por ejemplo, pages/docs.astro entra en conflicto con el índice de docs en /docs.

Rutas reservadas como 404.astro y 500.astro no están soportadas. Rutas dinámicas como [slug].astro tampoco están soportadas todavía.

La metadata debe usar export const squidoc = { ... } con valores string para title, description y layout.

Ejemplos de referencia

import { defineConfig } from "squidoc";

export default defineConfig({
  plugins: [
    "@squidoc/plugin-seo",
    "@squidoc/plugin-pages",
    "@squidoc/plugin-codeblocks",
    "@squidoc/plugin-article-tree",
  ],
});
---
export const squidoc = {
  title: "My Docs",
  description: "A custom homepage for my docs site.",
};
---

<section>
  <h1>My Docs</h1>
  <p>Read the latest documentation.</p>
  <a href="/docs/getting-started">Get started</a>
</section>
export default defineConfig({
  plugins: [
    {
      name: "@squidoc/plugin-pages",
      options: {
        pagesDir: "custom-pages",
      },
    },
  ],
});
---
export const squidoc = {
  title: "Changelog",
  layout: "docs",
};
---

<h1>Changelog</h1>