UNPKG

openai-compatible-task-master

Version:

使用MCP解析PRD文档并生成任务列表

86 lines 2.45 kB
import * as path from 'path'; import fs from 'fs/promises'; /** * 规范化路径,去除开头的斜杠 * @param filePath 文件路径 * @returns 规范化后的路径 */ export function normalizePath(filePath) { return filePath.startsWith('/') ? filePath.substring(1) : filePath; } /** * 构建完整路径 * @param projectDir 项目根目录 * @param relativePath 相对路径 * @returns 完整路径 */ export function resolveFullPath(projectDir, relativePath) { // 如果relativePath是绝对路径,直接返回 if (path.isAbsolute(relativePath)) { return relativePath; } // 如果relativePath以./或../开头,或者不包含/,则视为相对路径 if (relativePath.startsWith('./') || relativePath.startsWith('../') || !relativePath.includes('/')) { const normalizedPath = normalizePath(relativePath); return path.resolve(projectDir, normalizedPath); } // 否则,将其视为相对于项目根目录的路径 const normalizedPath = normalizePath(relativePath); return path.resolve(projectDir, normalizedPath); } /** * 检查文件是否存在 * @param filePath 文件路径 * @returns 文件是否存在 */ export async function ensureFileExists(filePath) { try { await fs.access(filePath); return true; } catch { return false; } } /** * 读取文件内容 * @param filePath 文件路径 * @returns 文件内容 */ export async function readFileContent(filePath) { return await fs.readFile(filePath, 'utf8'); } /** * 写入文件内容 * @param filePath 文件路径 * @param content 文件内容 */ export async function writeFileContent(filePath, content) { await fs.writeFile(filePath, content, 'utf8'); } /** * 确保目录存在 * @param dirPath 目录路径 */ export async function ensureDirectoryExists(dirPath) { await fs.mkdir(dirPath, { recursive: true }); } /** * 读取JSON文件 * @param filePath 文件路径 * @returns JSON对象 */ export async function readJsonFile(filePath) { const content = await fs.readFile(filePath, 'utf8'); return JSON.parse(content); } /** * 写入JSON文件 * @param filePath 文件路径 * @param data JSON对象 * @param spaces 缩进空格数 */ export async function writeJsonFile(filePath, data, spaces = 2) { await fs.writeFile(filePath, JSON.stringify(data, null, spaces), 'utf8'); } //# sourceMappingURL=path_util.js.map