Skip to content

Commit 8f038e4

Browse files
committed
docs: add sitemap
1 parent b084bf0 commit 8f038e4

File tree

4 files changed

+98
-1
lines changed

4 files changed

+98
-1
lines changed

docs/.vitepress/config.mts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import { defineConfig } from 'vitepress'
2+
import { buildLinks, buildSitemap } from './sitemap-config'
23

34
const description = 'A production-like Docker development environment for Magento 2'
5+
const links: { url: string; lastmod: number | undefined }[] = []
46

57
// https://vitepress.dev/reference/site-config
68
export default defineConfig({
9+
lastUpdated: true,
710
title: "Magento 2 Devcontainer",
811
description,
912
head: [
@@ -12,6 +15,12 @@ export default defineConfig({
1215
['meta', { name: 'twitter:description', content: description }],
1316
['link', { rel: 'me', href: 'https://twitter.com/graycoreio' }],
1417
],
18+
transformHtml(_, id, { pageData }) {
19+
buildLinks(id, pageData, links)
20+
},
21+
buildEnd({ outDir }) {
22+
buildSitemap(outDir, links)
23+
},
1524
themeConfig: {
1625
// https://vitepress.dev/reference/default-theme-config
1726
nav: [

docs/.vitepress/sitemap-config.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { createWriteStream } from 'node:fs';
2+
import { resolve } from 'node:path';
3+
import { SitemapStream } from 'sitemap';
4+
import { PageData } from 'vitepress';
5+
6+
export const buildLinks = (id, pageData: PageData, links: { url: string; lastmod: number | undefined }[] = []) => {
7+
if (!/[\\/]404\.html$/.test(id)) {
8+
links.push({
9+
url: pageData.relativePath.replace(/\.md$/, '.html'),
10+
lastmod: pageData.lastUpdated,
11+
});
12+
}
13+
};
14+
15+
export const buildSitemap = (outDir: string, links: { url: string; lastmod: number | undefined }[] = []) => {
16+
const sitemap = new SitemapStream({ hostname: 'https://devcontainer.mappia.io/' });
17+
const writeStream = createWriteStream(resolve(outDir, 'sitemap.xml'));
18+
sitemap.pipe(writeStream);
19+
links.forEach((link) => sitemap.write(link));
20+
sitemap.end();
21+
};

package-lock.json

Lines changed: 66 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"docs:preview": "vitepress preview docs"
2424
},
2525
"devDependencies": {
26+
"sitemap": "^9.0.0",
2627
"vitepress": "^2.0.0-alpha.16"
2728
}
28-
}
29+
}

0 commit comments

Comments
 (0)