Skip to content

Commit

Permalink
refactor(build): extract buildSitemap()
Browse files Browse the repository at this point in the history
  • Loading branch information
caugner committed Jun 3, 2024
1 parent d556f8a commit 978888a
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 22 deletions.
8 changes: 5 additions & 3 deletions build/blog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ import { extractSections } from "./extract-sections.js";
import { HydrationData } from "../libs/types/hydration.js";
import { DEFAULT_LOCALE } from "../libs/constants/index.js";
import { memoize } from "../content/utils.js";
import { makeSitemapXML, writeSitemap } from "./sitemaps.js";
import { buildSitemap } from "./sitemaps.js";

const READ_TIME_FILTER = /[\w<>.,!?]+/;
const HIDDEN_CODE_BLOCK_MATCH = /```.*hidden[\s\S]*?```/g;
Expand Down Expand Up @@ -513,8 +513,10 @@ export async function buildBlogSitemap(options: { verbose?: boolean }) {
.at(0),
};

const xml = makeSitemapXML(`/${DEFAULT_LOCALE}/blog/`, [index, ...items]);
const sitemapFilePath = await writeSitemap(xml, DEFAULT_LOCALE, "blog");
const sitemapFilePath = await buildSitemap([index, ...items], {
slugPrefix: `/${DEFAULT_LOCALE}/blog/`,
pathSuffix: [DEFAULT_LOCALE, "blog"],
});

if (options.verbose) {
console.log("Wrote", sitemapFilePath);
Expand Down
12 changes: 5 additions & 7 deletions build/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,7 @@ import {
} from "./index.js";
import { Doc, DocMetadata, Flaws } from "../libs/types/document.js";
import SearchIndex from "./search-index.js";
import {
makeSitemapXML,
makeSitemapIndexXML,
writeSitemap,
} from "./sitemaps.js";
import { makeSitemapIndexXML, buildSitemap } from "./sitemaps.js";
import { humanFileSize } from "./utils.js";
import { initSentry } from "./sentry.js";
import { macroRenderTimes } from "../kumascript/src/render.js";
Expand Down Expand Up @@ -345,8 +341,10 @@ async function buildDocuments(
}

for (const [locale, docs] of Object.entries(docPerLocale)) {
const xml = makeSitemapXML(`/${locale}/docs/`, docs);
await writeSitemap(xml, locale);
await buildSitemap(docs, {
slugPrefix: `/${locale}/docs/`,
pathSuffix: [locale],
});
}

searchIndex.sort();
Expand Down
7 changes: 4 additions & 3 deletions build/curriculum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import { memoize, slugToFolder } from "../content/utils.js";
// @ts-ignore
import { renderHTML } from "../ssr/dist/main.js";
import { CheerioAPI } from "cheerio";
import { makeSitemapXML, writeSitemap } from "./sitemaps.js";
import { buildSitemap } from "./sitemaps.js";

export const allFiles = memoize(async () => {
const api = new fdir()
Expand Down Expand Up @@ -443,8 +443,9 @@ export async function buildCurriculumSitemap(options: { verbose?: boolean }) {
}
}

const xml = makeSitemapXML("", items);
const sitemapFilePath = await writeSitemap(xml, DEFAULT_LOCALE, "curriculum");
const sitemapFilePath = await buildSitemap(items, {
pathSuffix: [DEFAULT_LOCALE, "curriculum"],
});

if (options.verbose) {
console.log("Wrote", sitemapFilePath);
Expand Down
23 changes: 19 additions & 4 deletions build/sitemaps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,25 @@ import { gzipSync } from "node:zlib";

import { BUILD_OUT_ROOT } from "../libs/env/index.js";

export function makeSitemapXML(
prefix: string,
docs: { slug: string; modified?: string }[]
interface SitemapEntry {
slug: string;
modified?: string;
}

export async function buildSitemap(
entries: SitemapEntry[],
{
slugPrefix = "",
pathSuffix = [],
}: { slugPrefix?: string; pathSuffix?: string[] }
) {
const xml = makeSitemapXML(slugPrefix, entries);
const path = writeSitemap(xml, ...pathSuffix);

return path;
}

function makeSitemapXML(prefix: string, docs: SitemapEntry[]) {
const sortedDocs = docs.slice().sort((a, b) => a.slug.localeCompare(b.slug));

// Based on https://support.google.com/webmasters/answer/183668?hl=en
Expand Down Expand Up @@ -45,7 +60,7 @@ export function makeSitemapIndexXML(paths: string[]) {
].join("\n");
}

export async function writeSitemap(xml: string, ...paths: string[]) {
async function writeSitemap(xml: string, ...paths: string[]) {
const dirPath = join(
BUILD_OUT_ROOT,
"sitemaps",
Expand Down
9 changes: 4 additions & 5 deletions build/spas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import { getSlugByBlogPostUrl, splitSections } from "./utils.js";
import { findByURL } from "../content/document.js";
import { buildDocument } from "./index.js";
import { findPostBySlug } from "./blog.js";
import { makeSitemapXML, writeSitemap } from "./sitemaps.js";
import { buildSitemap } from "./sitemaps.js";

const FEATURED_ARTICLES = [
"blog/learn-javascript-console-methods/",
Expand Down Expand Up @@ -384,14 +384,13 @@ export async function buildSPAs(options: {
}

// Sitemap.
const sitemapXml = makeSitemapXML(
"",
const sitemapFilePath = buildSitemap(
sitemap.map(({ url }) => ({
slug: url,
modified: "",
}))
})),
{ pathSuffix: ["misc"] }
);
const sitemapFilePath = writeSitemap(sitemapXml, "misc");

if (!options.quiet) {
console.log("Wrote", sitemapFilePath);
Expand Down

0 comments on commit 978888a

Please sign in to comment.