/** * 解析相对路径为绝对路径 * 支持 ./ 和 ../ 语法 * @param base - 基准路径(通常是当前 markdown 文件的路径) * @param relative - 相对路径或绝对路径 * @returns 解析后的路径 */ export function resolvePath(base: string, relative: string): string { if (relative.startsWith('/')) { return relative; } // if starts with http(s):// if(relative.startsWith('http://') || relative.startsWith('https://')){ return relative; } const baseParts = base.split('/').filter(Boolean); // 移除文件名,保留目录路径 if (baseParts.length > 0 && !base.endsWith('/')) { baseParts.pop(); } const relativeParts = relative.split('/'); for (const part of relativeParts) { if (part === '.' || part === '') { // 跳过 . 和空字符串 continue; } else if (part === '..') { // 向上一级 baseParts.pop(); } else { // 普通路径段 baseParts.push(part); } } return '/' + baseParts.join('/'); }