-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgenerateSitemap.js
More file actions
32 lines (25 loc) · 898 Bytes
/
Copy pathgenerateSitemap.js
File metadata and controls
32 lines (25 loc) · 898 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
const { create } = require('xmlbuilder2');
const axios = require('axios');
const fs = require('fs');
const path = require('path');
async function run(){
const [,,apiUrl,uiUrl] = process.argv;
const dataEndpoint = `${apiUrl}/creatures`;
const { data: { data: creatures } } = await axios.get(dataEndpoint, { params: { size: 2000 }});
const obj = {
urlset: {
'@xmlns': 'http://www.sitemaps.org/schemas/sitemap/0.9',
url: [
{ loc: `${uiUrl}/creatures` },
{ loc: `${uiUrl}/traits` },
{ loc: `${uiUrl}/perks` },
{ loc: `${uiUrl}/spells` },
{ loc: `${uiUrl}/status-effects` },
...creatures.map(({ slug }) => ({ loc: `${uiUrl}/creatures/${slug}` }))
]
}
};
const doc = create({ version: '1.0' }, obj);
fs.writeFileSync(path.join(process.cwd(), 'public', 'sitemap.xml'), doc.end({ prettyPrint: true }));
}
run();