Libreria Gratis Activo

Pagefind

Para añadir un buscador rápido a un sitio estático sin montar ni pagar servicios de búsqueda.

Buscador estático para webs generadas estáticamente, sin servidor y con muy poco consumo de ancho de banda.

Notas y contexto

Qué es

Pagefind es una librería de búsqueda totalmente estática para sitios generados estáticamente. Indexa el HTML ya construido de tu web y genera un paquete de búsqueda que funciona en el navegador, sin necesidad de servidor ni de servicios externos. El indexador está escrito en Rust y la búsqueda en el cliente se apoya en WebAssembly y JavaScript. Es un proyecto open source creado originalmente en CloudCannon y mantenido de forma activa.

Para qué sirve

  • Añadir un buscador a blogs, documentación o sitios generados con cualquier generador estático (Astro, Hugo, Eleventy, Jekyll, etc.).
  • Buscar en sitios grandes (miles de páginas) cargando solo los fragmentos del índice necesarios, en lugar de descargarlo entero.
  • Ofrecer resultados a nivel de sección dentro de una misma página, no solo a nivel de página completa.
  • Filtrar y segmentar resultados mediante metadatos personalizados (autor, categoría, fecha…).
  • Indexar también PDFs, ficheros JSON u otro contenido a través de sus librerías para Node.js y Python.

Cuándo usarlo

Es la opción ideal cuando tienes un sitio estático y quieres búsqueda sin depender de infraestructura propia ni de servicios de pago como Algolia. Encaja especialmente bien en proyectos de documentación y blogs desplegados en hosting estático (Netlify, Vercel, GitHub Pages). Si tu sitio es dinámico, necesitas búsquedas en tiempo real sobre datos cambiantes o resultados con relevancia muy afinada y analíticas, un servicio dedicado como Algolia o Meilisearch puede ajustarse mejor.

Ejemplo

Tras construir tu sitio, indexa la carpeta de salida (por ejemplo dist o public):

# Indexa el sitio y lo sirve para probarlo en local
npx -y pagefind --site dist --serve

Pagefind crea entonces los assets dentro de /pagefind/. Para mostrar el buscador con la UI por defecto, añade en tu página:

<link href="/pagefind/pagefind-ui.css" rel="stylesheet" />
<script src="/pagefind/pagefind-ui.js"></script>

<div id="search"></div>
<script>
  window.addEventListener('DOMContentLoaded', () => {
    new PagefindUI({ element: '#search' });
  });
</script>

En producción, ejecuta npx pagefind --site dist después de cada build (sin --serve).

Puntos clave

  • Totalmente estático: no hay backend que mantener ni costes de servicio.
  • Diseñado para escalar: una web de 10.000 páginas puede ser buscable con menos de 300 kB de descarga total gracias al índice fragmentado.
  • Soporte multilingüe automático, sin configuración adicional.
  • Componentes web y UI preconstruidos listos para usar, además de una API de JavaScript para integraciones a medida.
  • Compatible con cualquier generador estático, ya que solo necesita el HTML final.

Ten en cuenta

  • Trabaja sobre el HTML ya construido, así que debes ejecutar la indexación como paso posterior al build en cada despliegue.
  • Es búsqueda del lado del cliente: el índice se sirve como ficheros estáticos, sin relevancia ajustable en servidor ni analíticas integradas.
  • Para datos que cambian constantemente o búsquedas verdaderamente en tiempo real, un motor con servidor (Algolia, Meilisearch, Typesense) es más apropiado.
  • El indexador requiere Node.js para el flujo habitual con npx.
Volver al directorio
Volver al directorio