From 467730b6892634b13e0292ec142e97e04b327c75 Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Mon, 30 Oct 2023 12:57:56 +0000 Subject: [PATCH] Doc: Add Twitter and other metadata tags --- packages/tools/website/processDocs.ts | 7 ++++++- packages/tools/website/utils/frontMatter.ts | 3 +++ packages/tools/website/utils/openGraph.ts | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/tools/website/processDocs.ts b/packages/tools/website/processDocs.ts index c3dffd7e78..7bcf886ac6 100644 --- a/packages/tools/website/processDocs.ts +++ b/packages/tools/website/processDocs.ts @@ -12,6 +12,7 @@ import markdownUtils, { MarkdownTable } from '@joplin/lib/markdownUtils'; import { readmeFileTitle } from './utils/parser'; import { chdir } from 'process'; import yargs = require('yargs'); +import { extractOpenGraphTags } from './utils/openGraph'; const md5File = require('md5-file'); const htmlparser2 = require('@joplin/fork-htmlparser2'); @@ -370,10 +371,14 @@ const processMarkdownFile = async (sourcePath: string, destPath: string, context mdAndFrontMatter.header.date = formatted; } + const og = await extractOpenGraphTags(sourcePath); + mdAndFrontMatter.header.title = og.title; + mdAndFrontMatter.header.description = og.description; + if (og.image) mdAndFrontMatter.header.image = og.image; + mdAndFrontMatter.doc = mdAndFrontMatter.doc.replace(/^# (.*)\n/, `# $1\n\n${context.donateLinks}\n\n`); if (mdAndFrontMatter.header.forum_url) { - // mdAndFrontMatter.doc += `\n\n* * *\n\n[ Discuss on the forum](${mdAndFrontMatter.header.forum_url})`; mdAndFrontMatter.doc += `\n\n* * *\n\n[ Discuss on the forum](${mdAndFrontMatter.header.forum_url})`; } diff --git a/packages/tools/website/utils/frontMatter.ts b/packages/tools/website/utils/frontMatter.ts index 2370e697d2..b2f1647340 100644 --- a/packages/tools/website/utils/frontMatter.ts +++ b/packages/tools/website/utils/frontMatter.ts @@ -13,6 +13,9 @@ export interface FrontMatter { sidebar_label?: string; sidebar_position?: number; date?: string; + title?: string; + description?: string; + image?: string; } export interface MarkdownAndFrontMatter { diff --git a/packages/tools/website/utils/openGraph.ts b/packages/tools/website/utils/openGraph.ts index 54f608a15e..fc00f09fa5 100644 --- a/packages/tools/website/utils/openGraph.ts +++ b/packages/tools/website/utils/openGraph.ts @@ -28,13 +28,13 @@ const getImageUrl = (content: string): string | null => { return imageUrl; }; -export const extractOpenGraphTags = async (sourcePath: string, url: string): Promise => { +export const extractOpenGraphTags = async (sourcePath: string, url?: string): Promise => { const doc = await readmeFileTitleAndBody(sourcePath); const output: OpenGraphTags = { title: substrWithEllipsis(doc.title, 0, 70), description: substrWithEllipsis(markupToHtml().stripMarkup(MarkupLanguage.Markdown, doc.body), 0, 200), - url, + url: url ? url : '', }; const imageUrl = getImageUrl(doc.body);