Devido às novas bibliotecas emergentes que fazem a mesma funcionária, essa biblioteca está marcada como depreciada e considere o uso da Biblioteca Next-Sitemap.
Estamos à procura de mantenedores porque não tenho tempo suficiente para manter o pacote.
Por favor, considere fazer uma doação para a manutenção do projeto.
Doar
Simples sitemap.xml Mapper para o Next.js Projects.
Para instalar o pacote, execute isso no seu terminal, se você estiver usando o fio:
yarn add nextjs-sitemap-generator
E isso se você estiver usando o NPM:
npm i --save-dev nextjs-sitemap-generator
NextJs inicia seu próprio servidor para servir todos os arquivos criados. Mas há outra opção chamada servidor personalizado que usa um arquivo para iniciar um próximo servidor.
Se você deseja usar este pacote, você deve criar o arquivo sever. Você pode descobrir como fazê -lo aqui, o servidor personalizado a seguir
Este módulo foi criado para ser usado no lado do servidor personalizado do Node dos NextJs.
Ele deve ser usado no index.js/server.js para que, quando o servidor seja inicializado, ele será executado apenas uma vez.
Se você o colocar em qualquer manipulador de solicitação do desempenho do servidor do Node, poderá ser afetado.
Para aquelas pessoas que implantam em Vercel:
Um servidor personalizado não pode ser implantado no Vercel, a plataforma Next.js foi feita.
Por exemplo:
Se você tiver este exemplo de arquivo de servidor
// 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' )
} )
} ) Se você estiver exportando o próximo projeto como um aplicativo HTML estático, crie um arquivo de script do Next-Sitemap-Generator no diretório base.
A opção pagesDirectory deve apontar para a pasta de saída de arquivos estáticos.
Depois de gerar os arquivos de saída, execute node your_nextjs_sitemap_generator.js para gerar o sitemap.
Se suas páginas forem servidas estaticamente, você precisará definir a opção allowFileExtensions como true para que as páginas contenham a extensão, a maioria dos casos sendo .html .
getStaticPaths Se você estiver usando next@^9.4.0 , poderá ter seu site configurado com o GetStaticPaths para pré -gerar páginas em rotas dinâmicas. Para adicioná -los ao seu sitemap, você precisa carregar o arquivo Build_id em sua configuração para alcançar o diretório de construção gerado com as páginas de estática dentro, ao mesmo tempo em que exclui tudo o que não é estática:
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 : Você pode adicionar os domínios alternativos correspondentes ao idioma disponível. (OPCIONAL)
BaseUrl : o URL de que será usado no início de cada página.
ignoreIndexfiles : se o arquivo de índice deve estar no URL ou apenas no final do diretório com a barra (opcional)
IgnoredPaths : arquivo ou diretório para não mapear (como rotas administrativas). (Opcional)
Extrapaths : Matriz de caminhos extras a serem incluídos no sitemap (mesmo que não esteja presente no PagesDirectory) (opcional)
IgnoredExtensions : ignore os arquivos por extensão (opcional)
PagesDirectory : O diretório onde as páginas NextJs vivem. Você pode usar outro diretório enquanto eles são páginas do próximoJS. Deve ser um caminho absoluto .
TargetDirectory : o diretório onde o sitemap.xml será escrito.
SitemapFilename : o nome do arquivo para o sitemap. Padrões para sitemap.xml . (OPCIONAL)
PagesConfig : Configuração do objeto de prioridade e ChangeFreq por rota. Aceite os padrões regex (opcionais) as teclas de caminho devem ser minúsculas
Sitemapstylesheet : Matriz de objetos de estilo que serão aplicados ao Sitemap. (Opcional)
NextConfigPath (usado para rotas dinâmicas): Calls exportPathMap se exportado do arquivo nextConfigPath JS.
Veja isso para entender como fazê-lo (https://nextjs.org/docs/api-reference/next.config.js/exportPathmap) (opcional)
perlancefilextensions (usado para aplicações estáticas): garante que a extensão do arquivo seja exibida com o caminho no sitemap. Se você estiver usando o NextConfigPath com o ExportTrailingsLash na próxima configuração, o allowFileExtensions será ignorado. (OPCIONAL)
Por enquanto, o IgnoredPaths corresponde ao que cointaning que você coloca, ignorando se houver arquivos ou diretórios. Nas próximas versões, isso será corrigido.