🗺 Add sitemap

This commit is contained in:
Dennis Reimann
2020-10-07 19:11:17 +02:00
parent 153fddfaa0
commit cd8db40243
5 changed files with 77 additions and 1 deletions

51
package-lock.json generated
View File

@@ -1461,6 +1461,12 @@
"universalify": "^0.1.0"
}
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
"fsevents": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
@@ -1492,6 +1498,20 @@
"integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
"dev": true
},
"glob": {
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"glob-parent": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
@@ -1701,6 +1721,16 @@
"integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
"dev": true
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
@@ -2577,6 +2607,15 @@
"ee-first": "1.1.1"
}
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
"wrappy": "1"
}
},
"onchange": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/onchange/-/onchange-7.0.2.tgz",
@@ -2827,6 +2866,12 @@
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
"dev": true
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
"path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
@@ -4799,6 +4844,12 @@
}
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
"ws": {
"version": "6.1.4",
"resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz",

View File

@@ -25,7 +25,8 @@
"optimize": "npm-run-all -p optimize:* -s rev",
"optimize:styles": "csso dist/css/main.css --output dist/css/main.css",
"rev": "node-file-rev --manifest=generated/rev.json --root=dist dist/css/* dist/js/* dist/img/*.svg dist/img/cover/*.png dist/img/team/*.jpg dist/img/team/*.png",
"prod": "NODE_ENV=production npm-run-all build optimize -s build:pages"
"sitemap": "node tasks/generate_sitemap.js",
"prod": "NODE_ENV=production npm-run-all build optimize -s build:pages sitemap"
},
"dependencies": {
"amplitudejs": "5.2.0"
@@ -34,6 +35,7 @@
"autoprefixer": "10.0.1",
"browser-sync": "2.26.12",
"csso-cli": "3.0.0",
"glob": "7.1.6",
"jstransformer-markdown-it": "2.1.0",
"markdown-it": "11.0.1",
"node-file-rev": "1.1.2",

7
src/sitemap.pug Normal file
View File

@@ -0,0 +1,7 @@
doctype xml
urlset(xmlns="http://www.sitemaps.org/schemas/sitemap/0.9")
each url in pages
url
loc= url
lastmod= now
changefreq weekly

3
static/robots.txt Normal file
View File

@@ -0,0 +1,3 @@
User-agent: *
Sitemap: https://einundzwanzig.space/sitemap.xml

13
tasks/generate_sitemap.js Normal file
View File

@@ -0,0 +1,13 @@
const pug = require('pug')
const glob = require('glob')
const { writeFileSync } = require('fs')
const { resolve } = require('path')
const html = glob.sync(resolve(__dirname, '..', `dist/**/*.html`))
const pages = html.map(file => file.replace(/.*\/dist/, 'https://einundzwanzig.space'))
const now = (new Date()).toISOString()
const file = resolve(__dirname, '..', `src/sitemap.pug`)
const rendered = pug.renderFile(file, { pages, now, pretty: true })
const dst = resolve(__dirname, '..', 'dist', 'sitemap.xml')
writeFileSync(dst, rendered)