Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including uttori-plugin-generator-sitemap with all npm packages installed. Try it out:

var uttoriPluginGeneratorSitemap = require("uttori-plugin-generator-sitemap")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

uttori-plugin-generator-sitemap v2.0.2

A plugin to generate an XML sitemap for search engines.

view on npm npm module downloads Build Status Dependency Status Coverage Status

Uttori Sitemap Generator

A utility method for generating a XML sitemap.

Install

npm install --save uttori-plugin-generator-sitemap

Config

{
  // Registration Events
  events: {
    callback: ['document-save', 'document-delete'],
    validateConfig: ['validate-config'],
  },

  // Sitemap URL (ie https://domain.tld)
  base_url: '',

  // Location where the XML sitemap will be written to.
  directory: '',

  // Sitemap URL Filter
  url_filters: [],

  // Sitemap XML Header
  xml_header: '<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">',

  // Sitemap XML Footer
  xml_footer: '</urlset>',

  // Sitemap Filename
  filename: 'sitemap',

  // Sitemap Fie Extension
  extension: 'xml',

  // Sitemap default page priority
  page_priority: '0.80',

  // Sitemap URLs, must be an array.
  urls: [],
}

API Reference

SitemapGenerator

Uttori Sitemap Generator

Kind: global class

SitemapGenerator.configKey ⇒ String

The configuration key for plugin to look for in the provided configuration.

Kind: static property of SitemapGenerator
Returns: String - The configuration key.
Example (SitemapGenerator.configKey)

const config = { ...SitemapGenerator.defaultConfig(), ...context.config[SitemapGenerator.configKey] };

SitemapGenerator.defaultConfig() ⇒ Object

The default configuration.

Kind: static method of SitemapGenerator
Returns: Object - The configuration.
Example (SitemapGenerator.defaultConfig())

const config = { ...SitemapGenerator.defaultConfig(), ...context.config[SitemapGenerator.configKey] };

SitemapGenerator.validateConfig(config, _context)

Validates the provided configuration for required entries.

Kind: static method of SitemapGenerator

ParamTypeDescription
configObjectA configuration object.
config[SitemapGenerator.configKeyObjectA configuration object specifically for this plugin.
config[SitemapGenerator.configKey].urlsArray.<Object>A collection of Uttori documents.
config[SitemapGenerator.configKey].url_filtersArray.<RegExp>A collection of Regular Expression URL filters.
config[SitemapGenerator.configKey].base_urlStringThe base URL (ie https://domain.tld) for all documents.
config[SitemapGenerator.configKey].directoryStringThe path to the location you want the sitemap file to be writtent to.
_contextObjectA Uttori-like context (unused).

Example (SitemapGenerator.validateConfig(config, _context))

SitemapGenerator.validateConfig({ ... });

SitemapGenerator.register(context)

Register the plugin with a provided set of events on a provided Hook system.

Kind: static method of SitemapGenerator

ParamTypeDescription
contextObjectA Uttori-like context.
context.hooksObjectAn event system / hook system to use.
context.hooks.onfunctionAn event registration function.
context.configObjectA provided configuration to use.
context.config.eventsObjectAn object whose keys correspong to methods, and contents are events to listen for.

Example (SitemapGenerator.register(context))

const context = {
  hooks: {
    on: (event, callback) => { ... },
  },
  config: {
    [SitemapGenerator.configKey]: {
      ...,
      events: {
        callback: ['document-save', 'document-delete'],
        validateConfig: ['validate-config'],
      },
    },
  },
};
SitemapGenerator.register(context);

SitemapGenerator.callback(_document, context) ⇒ Object

Wrapper function for calling generating and writing the sitemap file.

Kind: static method of SitemapGenerator
Returns: Object - The provided document.

ParamTypeDescription
_documentObjectA Uttori document (unused).
contextObjectA Uttori-like context.
context.configObjectA provided configuration to use.
context.config.directoryStringThe directory to write the sitemap to.
context.config.filenameStringThe name to use for the generated file.
context.config.extensionStringThe file extension to use for the generated file.
context.storageProviderObjectA provided Uttori StorageProvider instance.
context.storageProvider.getQueryfunctionAccess method for getting documents.

Example (SitemapGenerator.callback(_document, context))

const context = {
  config: {
    [SitemapGenerator.configKey]: {
      ...,
    },
  },
  storageProvider: {
    getQuery: (query) => { ... }
  },
};
SitemapGenerator.callback(null, context);

SitemapGenerator.generateSitemap(_document, context) ⇒ String

Generates a sitemap from the provided context.

Kind: static method of SitemapGenerator
Returns: String - The generated sitemap.

ParamTypeDescription
_documentObjectA Uttori document (unused).
contextObjectA Uttori-like context.
context.configObjectA provided configuration to use.
context.config.base_urlStringThe prefix for URLs in the sitemap.
context.config.page_priorityNumberThe page_priority for pages.
context.config.url_filtersArray.<RegExp>A collection of URL filters used to filter documents.
context.config.urlsArray.<Object>Additional documents to add to the sitemap.
context.config.urls[].slugStringThe path for the current document.
context.config.urls[].updateDateStringThe timestamp of the last update for the current document.
context.config.xml_footerStringThe suffix for the sitemap.
context.config.xml_headerStringThe prefix for the sitemap.
context.storageProviderObjectA provided Uttori StorageProvider instance.
context.storageProvider.getQueryfunctionAccess method for getting documents.

Example (SitemapGenerator.callback(_document, context))

const context = {
  config: {
    [SitemapGenerator.configKey]: {
      ...,
    },
  },
  storageProvider: {
    getQuery: (query) => { ... }
  },
};
SitemapGenerator.generateSitemap(context);

Tests

To run the test suite, first install the dependencies, then run npm test:

npm install
npm test
DEBUG=Uttori* npm test

Contributors

License

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free