Debido a las nuevas bibliotecas emergentes que hacen la misma funcionalidad, esta biblioteca está marcada como en desacuerdo y considere usar la biblioteca de Siguiente Sitemap.
Estamos buscando mantenedores porque no tengo tiempo suficiente para mantener el paquete.
Considere hacer una donación para el mantenimiento del proyecto.
Donar
Mapeador sitemap.xml simple para proyectos Next.js.
Para instalar el paquete, ejecute esto en su terminal si está usando hilo:
yarn add nextjs-sitemap-generator
Y esto si estás usando npm:
npm i --save-dev nextjs-sitemap-generator
NextJS comienza su propio servidor para servir todos los archivos creados. Pero hay otra opción llamada Custom Server que usa un archivo para iniciar un próximo servidor.
Si desea usar este paquete, debe crear el archivo de Sever. Puede encontrar cómo hacerlo aquí NextJS Custom Server
Este módulo se ha creado para usarse en el lado del servidor personalizado de Node de NextJS.
Está destinado a usarse en index.js/server.js para que cuando se inicialice el servidor solo se ejecute una vez.
Si lo coloca en cualquiera de los controladores de solicitud del rendimiento del servidor de nodo, puede verse afectado.
Para aquellas personas que se despliegan en Vercel:
No se puede implementar un servidor personalizado en VERCE, la plataforma Next.js fue realizada.
Por ejemplo:
Si tiene este archivo de servidor de ejemplo
// server.js
const sitemap = require ( 'nextjs-sitemap-generator' ) ; // Import the package
const { createServer } = require ( 'http' )
const { parse } = require ( 'url' )
const next = require ( 'next' )
const dev = process . env . NODE_ENV !== 'production'
const app = next ( { dev } )
const handle = app . getRequestHandler ( )
/*
Here you is you have to use the sitemap function.
Using it here you are allowing to generate the sitemap file
only once, just when the server starts.
*/
sitemap ( {
alternateUrls : {
en : 'https://example.en' ,
es : 'https://example.es' ,
ja : 'https://example.jp' ,
fr : 'https://example.fr' ,
} ,
baseUrl : 'https://example.com' ,
ignoredPaths : [ 'admin' ] ,
extraPaths : [ '/extraPath' ] ,
pagesDirectory : __dirname + "\pages" ,
targetDirectory : 'static/' ,
sitemapFilename : 'sitemap.xml' ,
nextConfigPath : __dirname + "\next.config.js"
} ) ;
app . prepare ( ) . then ( ( ) => {
createServer ( ( req , res ) => {
const parsedUrl = parse ( req . url , true )
const { pathname , query } = parsedUrl
if ( pathname === '/a' ) {
app . render ( req , res , '/a' , query )
}
else if ( pathname === '/b' ) {
app . render ( req , res , '/b' , query )
} else {
handle ( req , res , parsedUrl )
} } ) . listen ( 3000 , ( err ) => {
if ( err ) throw err
console . log ( '> Ready on http://localhost:3000' )
} )
} ) Si está exportando el próximo proyecto como una aplicación HTML estática, cree un archivo de script de generador de próxima posición en el directorio base.
El pagesDirectory de opción debe apuntar a la carpeta de salida de archivos estáticos.
Después de generar los archivos de salida, ejecute node your_nextjs_sitemap_generator.js para generar el mapa del sitio.
Si sus páginas se atienden estáticamente, deberá establecer la opción allowFileExtensions como true para que las páginas contengan la extensión, la mayoría de los casos son .html .
getStaticPaths Si está utilizando next@^9.4.0 , puede tener su sitio configurado con GetStaticPaths para pregenerar páginas en rutas dinámicas. Para agregarlos a su mapa del sitio, debe cargar el archivo build_id en su configuración para llegar al directorio de compilación generado con páginas de estadísticas en el interior, al tiempo que excluye todo lo que no es páginas estáticas:
const sitemap = require ( "nextjs-sitemap-generator" ) ;
const fs = require ( "fs" ) ;
const BUILD_ID = fs . readFileSync ( ".next/BUILD_ID" ) . toString ( ) ;
sitemap ( {
baseUrl : "https://example.com" ,
// If you are using Vercel platform to deploy change the route to /.next/serverless/pages
pagesDirectory : __dirname + "/.next/server/static/" + BUILD_ID + "/pages" ,
targetDirectory : "public/" ,
ignoredExtensions : [ "js" , "map" ] ,
ignoredPaths : [ "assets" ] , // Exclude everything that isn't static page
} ) ; // your_nextjs_sitemap_generator.js
const sitemap = require ( "nextjs-sitemap-generator" ) ;
sitemap ( {
alternateUrls : {
en : "https://example.en" ,
es : "https://example.es" ,
ja : "https://example.jp" ,
fr : "https://example.fr" ,
} ,
baseUrl : "https://example.com" ,
ignoredPaths : [ "admin" ] ,
extraPaths : [ "/extraPath" ] ,
pagesDirectory : __dirname + "\pages" ,
targetDirectory : "static/" ,
sitemapFilename : "sitemap.xml" ,
nextConfigPath : __dirname + "\next.config.js" ,
ignoredExtensions : [ "png" , "jpg" ] ,
pagesConfig : {
"/login" : {
priority : "0.5" ,
changefreq : "daily" ,
} ,
} ,
sitemapStylesheet : [
{
type : "text/css" ,
styleFile : "/test/styles.css" ,
} ,
{
type : "text/xsl" ,
styleFile : "test/test/styles.xls" ,
} ,
] ,
} ) ;
console . log ( `✅ sitemap.xml generated!` ) ;
AlternateURLS : puede agregar los dominios alternativos correspondientes al idioma disponible. (OPCIONAL)
BaseURL : La URL de que se usará al comienzo de cada página.
IgnoreIndexFiles : si el archivo de índice debe estar en URL o simplemente el directorio que finaliza con la barra (opcional)
IgnoredPaths : archivo o directorio para no mapear (como las rutas de administración). (Opcional)
Extrapaths : matriz de rutas adicionales para incluir en el mapa del sitio (incluso si no está presente en PageSdirectory) (opcional)
IgnoredExtensions : Ignorar archivos por extensión. (Opcional)
PageSdirectory : el directorio donde viven las páginas de Nextjs. Puede usar otro directorio mientras son páginas NextJS. Debe ser un camino absoluto .
TargetDirectory : el directorio donde se escribirá siteMap.xml.
SitEmapFileName : el nombre de archivo para el mapa del sitio. El valor predeterminado a sitemap.xml . (OPCIONAL)
PageSconfig : Configuración de objetos de prioridad y ChangeFreq por ruta. Acepta las teclas de ruta de patrones regex (opcionales) deben ser minúsculas
Sitemapstylesheet : matriz de objetos de estilo que se aplicarán al mapa del sitio. (Opcional)
NextConfigPath (utilizado para rutas dinámicas): Llame exportPathMap si se exporta desde el archivo nextConfigPath JS.
Vea esto para comprender cómo hacerlo (https://nextjs.org/docs/api-reference/next.config.js/exportpathmap) (opcional)
EllowFileExtensions (utilizado para aplicaciones estáticas): garantiza que la extensión del archivo se muestre con la ruta en el mapa del sitio. Si está utilizando NextConfigPath con ExportTrailingsLash en la próxima configuración, se ignorará el anexo de ELECHEXEXTENSS. (OPCIONAL)
Por ahora, el IgnoredPaths coincide con lo que sea que sea lo que pones, ignorando si hay archivos o directorios. En las próximas versiones esto se solucionará.