En raison de nouvelles bibliothèques émergentes faisant la même fonctionnabilité, cette bibliothèque est marquée comme obsolète et envisagez d'utiliser la bibliothèque du sitemap suivant.
Nous recherchons des mainteneurs parce que je n'ai pas assez de temps pour maintenir le package.
Veuillez considérer pour faire un don pour la maintenance du projet.
Faire un don
sitemap.xml pour les projets suivants.js.
Pour installer le package, exécutez-le dans votre terminal si vous utilisez du fil:
yarn add nextjs-sitemap-generator
Et ceci si vous utilisez NPM:
npm i --save-dev nextjs-sitemap-generator
NextJS démarre son propre serveur pour servir tous les fichiers créés. Mais il existe une autre option appelée serveur personnalisé qui utilise un fichier pour démarrer un prochain serveur.
Si vous souhaitez utiliser ce package, vous devez créer le fichier Sever. Vous pouvez trouver comment le faire ici
Ce module a été créé pour être utilisé sur le côté serveur personnalisé du nœud de NextJS.
Il est destiné à être utilisé dans index.js / server.js afin que lorsque le serveur est initialisé, il ne s'exécutera qu'une seule fois.
Si vous le placez dans l'un des gestionnaires de demande des performances du serveur de nœuds peut être affecté.
Pour les personnes qui se déploient à Vercel:
Un serveur personnalisé ne peut pas être déployé sur Vercel, la plate-forme suivante.js a été conçue.
Par exemple:
Si vous avez cet exemple de fichier de serveur
// 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 vous exportez le prochain projet en tant qu'application HTML statique, créez un fichier de script de générateur de sitemap suivant dans le répertoire de base.
L'option pagesDirectory doit pointer vers le dossier de sortie des fichiers statiques.
Après avoir généré les fichiers de sortie, exécutez node your_nextjs_sitemap_generator.js pour générer le plan du site.
Si vos pages sont servies statiquement, vous devrez définir l'option allowFileExtensions comme true afin que les pages contiennent l'extension, la plupart des cas étant .html .
getStaticPaths Si vous utilisez next@^9.4.0 , vous pouvez avoir votre site configuré avec GetStaticPaths sur les pages prégénérées sur les itinéraires dynamiques. Pour les ajouter à votre plan du site, vous devez charger le fichier build_id dans votre configuration pour atteindre le répertoire de construction généré avec des pages de statistiques à l'intérieur, tout en excluant tout ce qui n'est pas des pages statiques:
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!` ) ;
AlternativeUrls : vous pouvez ajouter les domaines alternatifs correspondant à la langue disponible. (FACULTATIF)
BUSURL : L'URL qu'il va être utilisée au début de chaque page.
IgnoreIndexFiles : si le fichier d'index doit être dans URL ou simplement le répertoire se terminant par la barre oblique (facultative)
IgnoredPaths : fichier ou répertoire pour ne pas cartographier (comme les routes d'administration). (Facultatif)
Extrapathes : tableau de chemins supplémentaires à inclure dans le site de site (même s'il n'est pas présent dans PagesDirectory) (facultatif)
IgnoredExtensions : ignorez les fichiers par extension. (Facultatif)
PagesDirectory : Le répertoire où vivent les pages NextJS. Vous pouvez utiliser un autre répertoire pendant qu'ils sont des pages NextJS. Ce doit être un chemin absolu .
TargetDirectory : Le répertoire où SiteMap.xml va être écrit.
SiteMapFilename : le nom de fichier pour le site de site. Par défaut à sitemap.xml . (FACULTATIF)
pagesConfig : configuration de l'objet de priorité et changefreq par route. Accepte les modèles regex (facultatif) Les clés de chemin doivent être minuscules
SiteMapstylesHeet : tableau d'objets de style qui seront appliqués à Sitemap. (Facultatif)
NextConfigPath (utilisé pour les routes dynamiques): appelle exportPathMap si exporté à partir du fichier js nextConfigPath .
Voir ceci pour comprendre comment le faire (https://nextjs.org/docs/api-reference/next.config.js/exportpathmap) (facultatif)
ALLUPSFILEEXTENSIONS (utilisé pour les applications statiques): garantit que l'extension de fichier s'affiche avec le chemin d'accès dans le site. Si vous utilisez NextConfigPath avec ExportTrailslash dans la configuration suivante, AuthricleFileExtensions sera ignorée. (FACULTATIF)
Pour l'instant, le IgnoredPaths correspond à la contaning ce que vous mettez, ignorant s'il y a des fichiers ou des répertoires. Dans les versions suivantes, cela sera corrigé.