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); }