test/node_modules/@vuepress/plugin-seo/lib/node/appendSEO.js
2024-08-13 09:27:52 +08:00

33 lines
1.5 KiB
JavaScript

import { addOGP, appendAlternate, appendCanonical, appendJSONLD, } from './appendHead.js';
import { getJSONLDInfo } from './getJSONLDInfo.js';
import { getOGPInfo } from './getOGPInfo.js';
import { getAlternateLinks, getCanonicalLink, logger } from './utils/index.js';
export const appendSEO = (app, options) => {
app.pages.forEach((page) => {
const head = page.frontmatter.head || [];
const canonicalLink = getCanonicalLink(page, options);
const alternateLinks = getAlternateLinks(app, page, options);
appendCanonical(head, canonicalLink);
appendAlternate(head, alternateLinks);
if (page.frontmatter.seo !== false) {
const defaultOGP = getOGPInfo(page, options, app);
const defaultJSONLD = getJSONLDInfo(page, options, app);
const ogpContent = options.ogp
? options.ogp(defaultOGP, page, app)
: defaultOGP;
const jsonLDContent = options.jsonLd
? options.jsonLd(defaultJSONLD, page, app)
: defaultJSONLD;
if (app.env.isDebug) {
logger.info(`OGP of ${page.path}:`, ogpContent);
logger.info(`JSON-LD of ${page.path}:`, ogpContent);
}
addOGP(head, ogpContent);
appendJSONLD(head, jsonLDContent);
if (options.customHead)
options.customHead(head, page, app);
}
page.frontmatter.head = head;
});
};