https://github.com/cheap-glitch/planisphere
🗺️ A straightforward sitemap generator written in TypeScript.
https://github.com/cheap-glitch/planisphere
node-module sitemap sitemap-builder sitemap-generator sitemap-xml typescript-module
Last synced: 12 months ago
JSON representation
🗺️ A straightforward sitemap generator written in TypeScript.
- Host: GitHub
- URL: https://github.com/cheap-glitch/planisphere
- Owner: cheap-glitch
- License: isc
- Created: 2020-12-29T12:59:16.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2022-03-30T14:35:28.000Z (almost 4 years ago)
- Last Synced: 2025-03-18T11:58:02.485Z (about 1 year ago)
- Topics: node-module, sitemap, sitemap-builder, sitemap-generator, sitemap-xml, typescript-module
- Language: TypeScript
- Homepage: https://npm.im/planisphere
- Size: 447 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🗺️ planisphere
[](LICENSE)
[](https://github.com/cheap-glitch/planisphere/releases/latest)
[](https://coveralls.io/github/cheap-glitch/planisphere)
> A straightforward sitemap generator written in TypeScript.
## Features
* Generates sitemaps with [associated metadata](https://www.sitemaps.org/protocol.html#xmlTagDefinitions) 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
```javascript
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, 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](https://www.sitemaps.org/protocol.html#index).
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](https://www.w3.org/TR/NOTE-datetime), 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](https://www.sitemaps.org/protocol.html#xmlTagDefinitions).
#### `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](https://www.sitemaps.org/protocol.html#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, options?)
Generates and write the sitemap(s) to the disk. Returns a `Promise`.
#### `dest`
The path to the folder in which to write the generated file(s).
## Changelog
See the full changelog [here](https://github.com/cheap-glitch/planisphere/releases).
## Contributing
Contributions are welcomed! Please open an issue before proposing any significant changes.
## Related
* [`vue-cli-plugin-sitemap`](https://github.com/cheap-glitch/vue-cli-plugin-sitemap) – This module as a Vue CLI plugin
* [`sitempap.js`](https://github.com/ekalinin/sitemap.js) – Another sitemap generator (TypeScript)
* [www.sitemaps.org](https://www.sitemaps.org/protocol.html) – Detailed description of the Sitemaps protocol
## License
ISC