Files
jinshen-website/server/utils/rewriteAssetUrls.ts
R2m1liA 54d0e297ea feat: 将Markdown渲染改为HTML渲染
- CMS相关字段由Markdown改为WYSIWYG,前端做出对应更改
- AssetUrl重写:将CMS地址重写为本地API
2025-11-14 11:06:00 +08:00

37 lines
818 B
TypeScript

import { parseDocument, DomUtils } from 'htmlparser2';
import serialize from 'dom-serializer';
export function rewriteAssetUrls(
html: string,
cmsBase: string,
proxyBase: string
) {
if (!html) return html;
const dom = parseDocument(html);
const elements = DomUtils.findAll(
(elem) => elem.type === 'tag',
dom.children
);
for (const el of elements) {
// img / video / source -> src
// a -> href
const tag = el.name.toLowerCase();
const attr = tag === 'a' ? 'href' : 'src';
if (!el.attribs || !el.attribs[attr]) continue;
const url = el.attribs[attr];
// 替换cmsBase为proxyBase
if (url.startsWith(cmsBase)) {
const uuid = url.replace(`${cmsBase}/assets/`, '');
el.attribs[attr] = `${proxyBase}/${uuid}`;
}
}
return serialize(dom);
}