or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

gatsby-hooks.mdindex.mdplugin-configuration.mdutility-functions.md
tile.json

tessl/npm-gatsby-plugin-sitemap

Gatsby plugin that automatically creates XML sitemaps for your site during the production build process

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/gatsby-plugin-sitemap@6.15.x

To install, run

npx @tessl/cli install tessl/npm-gatsby-plugin-sitemap@6.15.0

index.mddocs/

Gatsby Plugin Sitemap

Gatsby Plugin Sitemap is a Gatsby plugin that automatically generates XML sitemaps for your site during the production build process. It creates a sitemap-index.xml file at the site root and individual sitemap files for every 45,000 URLs, following the sitemaps.org protocol.

Package Information

  • Package Name: gatsby-plugin-sitemap
  • Package Type: npm
  • Language: JavaScript (Babel-transpiled)
  • Installation: npm install gatsby-plugin-sitemap
  • Gatsby Version: ^5.0.0-next
  • Node Version: >=18.0.0

Core Imports

// Plugin is configured in gatsby-config.js - no direct imports needed
// The plugin operates entirely through Gatsby's plugin system
// Utilities are internal and not exported for direct import

Basic Usage

// gatsby-config.js
module.exports = {
  siteMetadata: {
    siteUrl: 'https://www.example.com',
  },
  plugins: ['gatsby-plugin-sitemap']
}

Architecture

Gatsby Plugin Sitemap operates through Gatsby's plugin lifecycle hooks:

  • Build-time Generation: Uses onPostBuild hook to generate sitemaps after all pages are created
  • Head Integration: Uses onRenderBody hook to optionally add sitemap link to HTML head
  • Configurable Pipeline: Provides customizable functions for each step of sitemap generation
  • Multi-file Support: Automatically splits large sitemaps into multiple files with an index
  • External Dependencies: Uses the sitemap library for XML generation and minimatch for glob pattern filtering

Capabilities

Plugin Configuration

Complete configuration options for customizing sitemap generation behavior, including output location, entry limits, custom queries, and filtering options.

// Plugin options interface
interface PluginOptions {
  output?: string;
  createLinkInHead?: boolean;
  entryLimit?: number;
  query?: string;
  excludes?: string[];
  resolveSiteUrl?: (data: any) => string | Promise<string>;
  resolvePagePath?: (page: any) => string;
  resolvePages?: (data: any) => any[] | Promise<any[]>;
  filterPages?: (page: any, excludedRoute: any, tools: FilterTools) => boolean;
  serialize?: (page: any, tools: SerializeTools) => any | Promise<any>;
}

Plugin Configuration

Gatsby Plugin Hooks

Implementation of Gatsby's plugin lifecycle hooks for sitemap generation and HTML head integration.

// Main build hook
exports.onPostBuild = async (context, options) => Promise<void>;

// HTML head integration hook  
exports.onRenderBody = (context, pluginOptions) => void;

// Plugin options validation schema
exports.pluginOptionsSchema = (joi) => JoiSchema;

Gatsby Plugin Hooks

Utility Functions

Helper functions for site URL resolution, page processing, filtering, and serialization that can be customized or used independently.

// Core resolver functions
function resolveSiteUrl(data: any): string;
function resolvePagePath(page: any): string;
function resolvePages(data: any): any[];

// Filtering and processing
function defaultFilterPages(page: any, excludedRoute: string, tools: FilterTools): boolean;
function pageFilter(options: PageFilterOptions): { filteredPages: any[], messages: string[] };
function serialize(page: any, tools: SerializeTools): any;

Utility Functions

Types

interface FilterTools {
  minimatch: (path: string, pattern: string) => boolean;
  withoutTrailingSlash: (path: string) => string;
  resolvePagePath: (page: any) => string;
}

interface SerializeTools {
  resolvePagePath: (page: any) => string;
}

interface PageFilterOptions {
  allPages: any[];
  filterPages: (page: any, excludedRoute: any, tools: FilterTools) => boolean;
  excludes: any[];
}