sitemap.js
sitemap.js is a high-level sitemap-generating framework that
makes creating sitemap XML files easy.
Table of Contents
TOC created by gh-md-toc
Installation
It's recommended to install via npm:
npm install --save sitemap
Usage
The main functions you want to use in the sitemap module are
var sm = require('sitemap')
var sitemap = sm.createSitemap({ options });
sitemap.toXML( function(err, xml){ if (!err){ console.log(xml) } });
var xml = sitemap.toString();
###Example of using sitemap.js with express:
var express = require('express')
, sm = require('sitemap');
var app = express()
, sitemap = sm.createSitemap ({
hostname: 'http://example.com',
cacheTime: 600000,
urls: [
{ url: '/page-1/', changefreq: 'daily', priority: 0.3 },
{ url: '/page-2/', changefreq: 'monthly', priority: 0.7 },
{ url: '/page-3/'},
{ url: '/page-4/', img: "http://urlTest.com" }
]
});
app.get('/sitemap.xml', function(req, res) {
sitemap.toXML( function (err, xml) {
if (err) {
return res.status(500).end();
}
res.header('Content-Type', 'application/xml');
res.send( xml );
});
});
app.listen(3000);
###Example of synchronous sitemap.js usage:
var express = require('express')
, sm = require('sitemap');
var app = express()
, sitemap = sm.createSitemap ({
hostname: 'http://example.com',
cacheTime: 600000,
urls: [
{ url: '/page-1/', changefreq: 'daily', priority: 0.3 },
{ url: '/page-2/', changefreq: 'monthly', priority: 0.7 },
{ url: '/page-3/' }
]
});
app.get('/sitemap.xml', function(req, res) {
res.header('Content-Type', 'application/xml');
res.send( sitemap.toString() );
});
app.listen(3000);
###Example of dynamic page manipulations into sitemap:
var sitemap = sm.createSitemap ({
hostname: 'http://example.com',
cacheTime: 600000
});
sitemap.add({url: '/page-1/'});
sitemap.add({url: '/page-2/', changefreq: 'monthly', priority: 0.7});
sitemap.del({url: '/page-2/'});
sitemap.del('/page-1/');
###Example of pre-generating sitemap based on existing static files:
var sm = require('sitemap')
, fs = require('fs');
var sitemap = sm.createSitemap({
hostname: 'http://www.mywebsite.com',
cacheTime: 600000,
urls: [
{ url: '/' , changefreq: 'weekly', priority: 0.8, lastmodrealtime: true, lastmodfile: 'app/assets/index.html' },
{ url: '/page1', changefreq: 'weekly', priority: 0.8, lastmodrealtime: true, lastmodfile: 'app/assets/page1.html' },
{ url: '/page2' , changefreq: 'weekly', priority: 0.8, lastmodrealtime: true, lastmodfile: 'app/templates/page2.hbs' }
]
});
fs.writeFileSync("app/assets/sitemap.xml", sitemap.toString());
###Example of images with captions:
var sm = sm.createSitemap({
urls: [{
url: 'http://test.com/page-1/',
img: [
{ url: 'http://test.com/img1.jpg', caption: 'An image'},
{ url: 'http://test.com/img2.jpg', caption: 'Another image'}
]
}]
});
###Example of indicating alternate language pages:
Description in
the google's Search Console Help.
var sm = sm.createSitemap({
urls: [{
url: 'http://test.com/page-1/',
changefreq: 'weekly',
priority: 0.3,
links: [
{ lang: 'en', url: 'http://test.com/page-1/', },
{ lang: 'ja', url: 'http://test.com/page-1/ja/', },
]
},]
});
###Example of indicating Android app deep linking:
Description in
the google's Search Console Help.
var sm = sm.createSitemap({
urls: [{
url: 'http://test.com/page-1/',
changefreq: 'weekly',
priority: 0.3,
androidLink: 'android-app://com.company.test/page-1/'
}]
});
###Example of Sitemap Styling
var sm = sm.createSitemap({
urls: [{
url: 'http://test.com/page-1/',
changefreq: 'weekly',
priority: 0.3,
links: [
{ lang: 'en', url: 'http://test.com/page-1/', },
{ lang: 'ja', url: 'http://test.com/page-1/ja/', },
]
},],
xslUrl: 'sitemap.xsl'
});
Example of mobile URL
Description in
the google's Search Console Help.
var sm = sm.createSitemap({
urls: [{
url: 'http://mobile.test.com/page-1/',
changefreq: 'weekly',
priority: 0.3,
mobile: true
},],
xslUrl: 'sitemap.xsl'
});
Example of using HH:MM:SS in lastmod
var sm = require('sitemap')
, sitemap = sm.createSitemap({
hostname: 'http://www.mywebsite.com',
urls: [{
url: 'http://mobile.test.com/page-1/',
lastmodISO: '2015-06-27T15:30:00.000Z',
changefreq: 'weekly',
priority: 0.3
}]
});
Example of Sitemap Index as String
var sm = require('sitemap')
, smi = sm.buildSitemapIndex({
urls: ['https://example.com/sitemap1.xml', 'https://example.com/sitemap2.xml']
xslUrl: 'https://example.com/style.xsl'
});
Example of Sitemap Index
var sm = require('sitemap')
, smi = sm.createSitemapIndex({
cacheTime: 600000,
hostname: 'http://www.sitemap.org',
sitemapName: 'sm-test',
sitemapSize: 1,
targetFolder: require('os').tmpdir(),
urls: ['http://ya.ru', 'http://ya2.ru']
});
Testing
➥ git clone https://github.com/ekalinin/sitemap.js.git
➥ cd sitemap.js
➥ make env
➥ . env/bin/activate
(env) ➥ make test
./node_modules/expresso/bin/expresso ./tests/sitemap.test.js
100% 33 tests
License
See LICENSE
file.