Skip to content

🗺️ A straightforward sitemap generator written in TypeScript.

License

Notifications You must be signed in to change notification settings

cheap-glitch/planisphere

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🗺️ planisphere

License Latest release Coverage status

A straightforward sitemap generator written in TypeScript.

Features

  • Generates sitemaps with associated metadata for each URL
  • Escapes problematic URLs and can append/remove trailing slashes
  • Automatically splits large sitemaps (with 50,000+ URLs) and generates the associated index

Installation

npm i planisphere

Usage

const { writeSitemaps } = require('planisphere');

writeSitemaps('dist', [
	'/',
	'/about',
	{
		loc: '/blog',
		priority: 0.9,
		changefreq: 'weekly',
	},
], {
	baseUrl: 'https://example.com',
	trailingSlash: false,
	pretty: true,
})
.then(() => {
	console.info('Successfully generated sitemap');
});

API

generateSitemaps(urls: Array<string | SitemapUrl>, options?): Array

Returns an array of sitemaps contents.

Usually there will only be a single one, but if more than 50,000 URLs are provided, they will be split into several sitemaps as requested by the protocol. You should then pass the resulting array to generateSitemapsIndex().

urls

An array of strings and/or objects with the following properties:

  • loc: string: the URL (required)

  • lastmod: Date | number | string: a date string in the W3C format, a JavaScript timestamp string, a numeric timestamp or a Date object

  • changefreq: SitemapUrlChangefreq: 'always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly' or 'never'

  • priority: number | string: a multiple of 0.1 between 0.0 and 1.0 (defaults to 0.5)

For more information on those meta tags, you can consult the official specification.

options

An object with the following properties (all optional):

  • defaults: { lastmod?, changefreq?, priority? }: default values for the meta tags accompanying each URL

  • baseUrl: string: a base URL to prepend every URL with

  • trailingSlash: boolean: true to append a trailing slash to every URL, false to always remove it (if unspecified, will leave the URLs unchanged)

  • pretty: boolean: true to pretty-print the outputted XML to be human-readable

generateSitemapsIndex(files: Array, options?, lastmod?): string?

Returns the contents of a sitemap index, or undefined if there is one filename or less.

files

The filenames of the sitemap(s).

lastmod

The last modification date of the sitemaps (defaults to the current timestamp).

writeSitemaps(dest: string, urls: Array<string | SitemapUrl>, options?)

Generates and write the sitemap(s) to the disk. Returns a Promise<void>.

dest

The path to the folder in which to write the generated file(s).

Changelog

See the full changelog here.

Contributing

Contributions are welcomed! Please open an issue before proposing any significant changes.

Related

License

ISC