templates/vitekit/my-vite-project/vite/html-transform-base.js
2026-04-12 21:03:18 +03:00

42 lines
1.0 KiB
JavaScript

import { processArg } from './app.js';
function htmlTransformBase() {
return {
name: 'html-transform-base',
transformIndexHtml: (html) => {
if (!html || !html.length) {
return html;
}
const { base } = processArg;
if (!base || base === '/' || base.startsWith('.')) {
return html;
}
const baseFormatted = `/${base.trim().replace(/^\/|\/$/g, '')}`;
const modifiedHtml = html.replace(
/(href|src)=["']([^"']+)["']/gi,
(match, attr, url) => {
if (!url || !url.length || url.startsWith('./')
|| url.startsWith(baseFormatted) || url.startsWith('http')
|| url.startsWith('www') || url.startsWith('__VITE_')) {
return match;
}
const urlFormatted = url === '/' ? ''
: `${url.trim().replace(/^\/|\/$/g, '')}`;
return `${attr}="${baseFormatted}${urlFormatted.length
? `/${urlFormatted}` : ''}"`;
},
);
return modifiedHtml;
},
};
}
export default htmlTransformBase;