/** * Preset 安装器 * 提供 preset 安装、管理和路径解析功能 */ export declare class PresetInstaller { private readonly packageManager; constructor(); /** * 确保 preset 已安装,未安装则自动安装 * @param cwd 当前工作目录 * @param presetPath preset 路径或名称 * @returns 解析后的 preset 路径 */ ensurePresetInstalled(cwd: string, presetPath: string): string; /** * 从 preset 路径中提取包名 * @param preset preset 路径或名称 * @returns 标准化的包名 */ extractPresetName(preset: string): string; /** * 检查是否为已解析的路径 */ private isResolvedPath; /** * 安装并解析 preset */ private installAndResolvePreset; /** * 安装指定的 preset * @param cwd 当前工作目录 * @param presetName preset 名称 */ private installPreset; /** * 记录 preset 安装开始 */ private logPresetInstallation; /** * 记录安装成功 */ private logInstallationSuccess; /** * 记录安装失败 */ private logInstallationError; /** * 记录依赖添加 */ private logDependencyAddition; /** * 验证安装并解析 preset 路径 * Node.js 模块解析的复杂性: * 不同包管理器(npm、yarn、pnpm)的安装路径不同 * pnpm 使用符号链接和 .pnpm 目录结构 * Node.js 的 require.resolve 在某些环境下有限制 * @param cwd 当前工作目录 * @param presetName preset 名称 * @returns 解析后的 preset 路径 */ private verifyAndResolvePreset; /** * 生成诊断信息 */ private generateDiagnosticInfo; /** * 查找工作区根目录(支持 catalog 协议) * @param cwd 当前工作目录 * @returns 工作区根目录路径,如果没找到则返回 null */ private findWorkspaceRoot; /** * 清除与 preset 相关的 require 缓存 * @param presetName preset 名称 */ private clearRequireCache; }