
sitemap-stream
SitemapStream is a simple and fast tool that build sitemaps using streams.
It automatically creates separated files, following the Google specifications
You can find information about the sitemap's syntax here (you'll find the authorized values the #inject method can receive).
Notes:
- This package respects the semver and the keep a changelog specifications.
- This module's code is using ES6 features, so you'll probably need to run your application with the flag --harmony (depending to your Node version).
Install
npm i sitemap-stream
Methods
SitemapStream#Constructor(options):
{
sitemapDirectoryUrl: String,
limit: Number,
isMobile: Boolean,
outputFolder: String
toCompress: Boolean
}
SitemapStream#inject(url || options)
Url Case:
Options Case:
{
url: String,
changeFreq: String,
priority: String
}
SitemapStream#reset
Useful if you want to start writing a new sitemap using the same SitemapStream instance
Events
SitemapStream use streams, so it emit events to let you know what happens.
Here are the events you can listen to:
error
sg.on('error', err => {
console.error(`Something wrong happened: ${err}`);
});
drain
let i = 0;
function injectUrls() {
while (i<1000000) {
const isInjected = sg.inject(`http://test-${i}.com`);
if (!isInjected) return i;
i++;
}
}
sg.on('drain', () => {
console.info(`Because we have injected a big amount of lines in a short time, the stream could need to be drained, in this case, the sg#inject method returns false and the drain event is emitted when the stream is ready to write again`);
injectUrls();
});
injectUrls();
sitemap-created
sg.on('sitemap-created', path => {
console.info(`A sitemap file has just been written here: ${path}`);
});
sitemap-index
sg.on('sitemap-index', path => {
console.info(`A sitemapindex file has just been written here: ${path}`);
});
done
sg.on('done', nbFiles => {
console.info(`The job is done, we have written ${nbFiles} files !`);
});
Examples
Basic
const sg = require('sitemap-stream')();
sg.inject('/some-path');
sg.inject({ url: '/another-path' });
sg.inject({ url: '/my-last-path', changeFreq: 'daily', priority: 0.7 });
sg.done();
With options
const sg = require('sitemap-stream')({ isMobile: true });
sg.inject('/some-path');
sg.inject({ url: '/another-path' });
sg.inject({ url: '/my-last-path', changeFreq: 'daily', priority: 0.7 });
sg.done();
With Events
const sg = require('sitemap-stream')();
sg.on('sitemap-created', (fileName) => {
console.log('A sitemap has been created !');
});
sg.on('sitemapindex-index', () => {
console.log('The sitemapindex has been created, we are done !');
});
sg.on('done', () => {
console.info('Everything is done !');
});
for (let i=0; i<60000; i++) sg.inject(`/some-path-${i}`);
sg.done();