uttori-plugin-generator-sitemap
v2.0.2
Published
A plugin to generate an XML sitemap for search engines.
Downloads
2
Readme
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
- .defaultConfig() ⇒ Object
- .validateConfig(config, _context)
- .register(context)
- .callback(_document, context) ⇒ Object
- .generateSitemap(_document, context) ⇒ String
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
| Param | Type | Description | | --- | --- | --- | | config | Object | A configuration object. | | config[SitemapGenerator.configKey | Object | A configuration object specifically for this plugin. | | config[SitemapGenerator.configKey].urls | Array.<Object> | A collection of Uttori documents. | | config[SitemapGenerator.configKey].url_filters | Array.<RegExp> | A collection of Regular Expression URL filters. | | config[SitemapGenerator.configKey].base_url | String | The base URL (ie https://domain.tld) for all documents. | | config[SitemapGenerator.configKey].directory | String | The path to the location you want the sitemap file to be writtent to. | | _context | Object | A 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
| Param | Type | Description | | --- | --- | --- | | context | Object | A Uttori-like context. | | context.hooks | Object | An event system / hook system to use. | | context.hooks.on | function | An event registration function. | | context.config | Object | A provided configuration to use. | | context.config.events | Object | An 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.
| Param | Type | Description | | --- | --- | --- | | _document | Object | A Uttori document (unused). | | context | Object | A Uttori-like context. | | context.config | Object | A provided configuration to use. | | context.config.directory | String | The directory to write the sitemap to. | | context.config.filename | String | The name to use for the generated file. | | context.config.extension | String | The file extension to use for the generated file. | | context.storageProvider | Object | A provided Uttori StorageProvider instance. | | context.storageProvider.getQuery | function | Access 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.
| Param | Type | Description | | --- | --- | --- | | _document | Object | A Uttori document (unused). | | context | Object | A Uttori-like context. | | context.config | Object | A provided configuration to use. | | context.config.base_url | String | The prefix for URLs in the sitemap. | | context.config.page_priority | Number | The page_priority for pages. | | context.config.url_filters | Array.<RegExp> | A collection of URL filters used to filter documents. | | context.config.urls | Array.<Object> | Additional documents to add to the sitemap. | | context.config.urls[].slug | String | The path for the current document. | | context.config.urls[].updateDate | String | The timestamp of the last update for the current document. | | context.config.xml_footer | String | The suffix for the sitemap. | | context.config.xml_header | String | The prefix for the sitemap. | | context.storageProvider | Object | A provided Uttori StorageProvider instance. | | context.storageProvider.getQuery | function | Access 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