From 05f2b8fbb4982327d678cf2fd291155f89bc6cd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20O=C5=BEana?= Date: Fri, 14 Aug 2026 12:23:52 +0200 Subject: [PATCH] Use @sphido/markdown in the examples MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit basic, extenders, json and rss rendered markdown by calling marked inside the loop; they now pass markdown() to getPages() as the last extender and read the HTML from page.content. The extenders example drops its getContent() object extender — rendering is what the package does now, and the example still demonstrates callback extenders, an extender package and object extenders side by side. sitemap listed marked without ever importing it, so the dependency goes. --- basic/index.js | 9 ++++----- basic/package.json | 2 +- extenders/index.js | 14 ++++++-------- extenders/package.json | 2 +- json/index.js | 7 +++---- json/package.json | 2 +- readme.md | 3 ++- rss/index.js | 8 ++++---- rss/package.json | 2 +- sitemap/package.json | 3 +-- 10 files changed, 24 insertions(+), 28 deletions(-) diff --git a/basic/index.js b/basic/index.js index b5eefa0..1f71bc0 100755 --- a/basic/index.js +++ b/basic/index.js @@ -3,8 +3,8 @@ import {dirname, relative, join} from 'node:path'; import {getPages, allPages, writeFile} from '@sphido/core'; import slugify from '@sindresorhus/slugify'; -import {marked} from 'marked'; import {frontmatter} from '@sphido/frontmatter'; +import {markdown} from '@sphido/markdown'; function getHtml({title, content, path, date}) { return ` @@ -23,15 +23,14 @@ function getHtml({title, content, path, date}) { `; } -const pages = await getPages({path: 'content'}, frontmatter); +// frontmatter loads page.content and reads the YAML block, markdown() renders +// the rest to HTML — it goes last, after every extender that wants markdown +const pages = await getPages({path: 'content'}, frontmatter, markdown()); for (const page of allPages(pages)) { page.slug = slugify(page.name) + '.html'; page.output = join('public', relative('content', dirname(page.path)), page.slug); - // process markdown (PS: frontmatter already loads page.content) - page.content = marked(page.content); - // save HTML file await writeFile(page.output, getHtml(page)); } \ No newline at end of file diff --git a/basic/package.json b/basic/package.json index fd99e58..d46beef 100644 --- a/basic/package.json +++ b/basic/package.json @@ -13,7 +13,7 @@ "@sindresorhus/slugify": "2.2.1", "@sphido/core": "^3.1.0", "@sphido/frontmatter": "^3.1.0", - "marked": "^18.0.0" + "@sphido/markdown": "^1.0.0" }, "devDependencies": { "serve": "14.2.4" diff --git a/extenders/index.js b/extenders/index.js index 5fe1b1c..9cbfc59 100755 --- a/extenders/index.js +++ b/extenders/index.js @@ -1,9 +1,9 @@ #!/usr/bin/env node import {dirname, relative, join} from 'node:path'; -import {getPages, allPages, writeFile, readFile} from '@sphido/core'; +import {getPages, allPages, writeFile} from '@sphido/core'; import slugify from '@sindresorhus/slugify'; -import {marked} from 'marked'; +import {markdown} from '@sphido/markdown'; function metadata(page, dirent) { @@ -17,10 +17,6 @@ function author(page) { page.author = 'Roman Ožana'; } -async function getContent() { - return marked(await readFile(this.path)); -} - const pages = await getPages({path: 'content'}, // callback extender @@ -30,9 +26,11 @@ const pages = await getPages({path: 'content'}, page.date = new Date(); }, + // extender package: renders page.content from markdown to HTML + markdown(), + // Object extenders { - getContent, getFooter: function () { return ``; }, @@ -51,7 +49,7 @@ const pages = await getPages({path: 'content'},
Sphido Example website
-
${await this.getContent()}
+
${this.content}
${this.getFooter()} `; diff --git a/extenders/package.json b/extenders/package.json index 206b185..ce1870b 100644 --- a/extenders/package.json +++ b/extenders/package.json @@ -12,7 +12,7 @@ "dependencies": { "@sindresorhus/slugify": "latest", "@sphido/core": "^3.1.0", - "marked": "^18.0.0" + "@sphido/markdown": "^1.0.0" }, "devDependencies": { "serve": "latest" diff --git a/json/index.js b/json/index.js index 8ec0317..e5c164d 100755 --- a/json/index.js +++ b/json/index.js @@ -3,16 +3,15 @@ import {dirname, relative, join} from 'node:path'; import {getPages, allPages, writeFile} from '@sphido/core'; import slugify from '@sindresorhus/slugify'; -import {marked} from 'marked'; import {frontmatter} from '@sphido/frontmatter'; +import {markdown} from '@sphido/markdown'; -const pages = await getPages({path: 'content'}, frontmatter); +const pages = await getPages({path: 'content'}, frontmatter, markdown()); for (const page of allPages(pages)) { page.slug = slugify(page.name) + '.json'; const output = join('public', relative('content', dirname(page.path)), page.slug); - page.content = marked(page.content); - // save JSON file + // save JSON file with the rendered HTML in page.content await writeFile(output, JSON.stringify(page)); } \ No newline at end of file diff --git a/json/package.json b/json/package.json index 0674595..bf774c1 100644 --- a/json/package.json +++ b/json/package.json @@ -12,6 +12,6 @@ "@sindresorhus/slugify": "2.2.1", "@sphido/core": "^3.1.0", "@sphido/frontmatter": "^3.1.0", - "marked": "^18.0.0" + "@sphido/markdown": "^1.0.0" } } diff --git a/readme.md b/readme.md index f51d76e..398efb2 100644 --- a/readme.md +++ b/readme.md @@ -5,7 +5,8 @@ Here are some examples of how to use [Sphido](https://sphido.org/), a rocket ## [Basic usage](https://github.com/sphido/examples/tree/main/basic) -This example shows how to use Sphido for processing Markdown files to HTML. +This example shows how to use Sphido for processing Markdown files to HTML with the +[`@sphido/markdown`](https://github.com/sphido/sphido/tree/main/packages/sphido-markdown) extender. ## [Extenders](https://github.com/sphido/examples/tree/main/extenders) diff --git a/rss/index.js b/rss/index.js index 648086c..4b37212 100755 --- a/rss/index.js +++ b/rss/index.js @@ -1,9 +1,9 @@ #!/usr/bin/env node import {dirname, relative, join} from 'node:path'; -import {getPages, allPages, writeFile, readFile} from '@sphido/core'; +import {getPages, allPages, writeFile} from '@sphido/core'; import slugify from '@sindresorhus/slugify'; -import {marked} from 'marked'; +import {markdown} from '@sphido/markdown'; import {renderFeed, writeFeed} from '@sphido/feed'; function getHtml({title, content, path, date}) { @@ -21,14 +21,14 @@ function getHtml({title, content, path, date}) { const items = []; -const pages = await getPages({path: 'content'}); +// markdown() loads each file and renders page.content to HTML +const pages = await getPages({path: 'content'}, markdown()); for (const page of allPages(pages)) { page.slug = join('/', relative('content', dirname(page.path)), slugify(page.name) + '.html'); page.output = join('public', page.slug); page.url = new URL(page.slug, 'https://sphido.org/').toString(); - page.content = marked(await readFile(page.path)); page.title = page.content.match(/(?<=]*?>)([^<>]+?)(?=<\/h[12]>)/i)?.pop(); page.date = new Date(); diff --git a/rss/package.json b/rss/package.json index 4aa0a7d..a94dbc6 100644 --- a/rss/package.json +++ b/rss/package.json @@ -12,7 +12,7 @@ "@sindresorhus/slugify": "2.2.1", "@sphido/core": "^3.1.0", "@sphido/feed": "^3.1.0", - "marked": "^18.0.0" + "@sphido/markdown": "^1.0.0" }, "devDependencies": { "serve": "14.2.4" diff --git a/sitemap/package.json b/sitemap/package.json index 352e8b3..f040892 100644 --- a/sitemap/package.json +++ b/sitemap/package.json @@ -11,8 +11,7 @@ "dependencies": { "@sindresorhus/slugify": "latest", "@sphido/core": "^3.1.0", - "@sphido/sitemap": "^4.0.0", - "marked": "^18.0.0" + "@sphido/sitemap": "^4.0.0" }, "devDependencies": { "serve": "latest"