{"version":3,"sources":["../src/package/getPackageTool.ts"],"names":["packageToolCache","getPackageTool","cwd","projectFolder","getPackageRootPath","tools","pnpmLockExists","fs","path","yarnLockExists"],"mappings":";;;;AASA,IAAMA,EAAmB,IAAI,GAAA,CAEtB,SAASC,CAAAA,EAA8C,CAC1D,IAAMC,CAAAA,CAAM,QAAQ,GAAI,EAAA,CAGxB,GAAIF,CAAiB,CAAA,GAAA,CAAIE,CAAG,CAAA,CACxB,OAAOF,CAAiB,CAAA,GAAA,CAAIE,CAAG,CAGnC,CAAA,IAAMC,EAAgBC,CAAmBF,CAAAA,CAAG,CAC5C,CAAA,GAAIC,GAAiB,IACjB,CAAA,MAAM,IAAI,KAAM,CAAA,oFAA6B,EAGjD,IAAME,CAAAA,CAAqC,EAAC,CAGtCC,EAAiBC,CAAG,CAAA,UAAA,CAAWC,EAAK,IAAKL,CAAAA,CAAAA,CAAe,gBAAgB,CAAC,CAAA,CACzEM,GAAiB,CAAA,CAACH,GAAkBC,CAAG,CAAA,UAAA,CAAWC,EAAK,IAAKL,CAAAA,CAAAA,CAAe,WAAW,CAAC,CAAA,CAE7F,OAAIG,CAAAA,CACAD,EAAM,IAAK,CAAA,MAAM,EACVI,GACPJ,CAAAA,CAAAA,CAAM,KAAK,MAAM,CAAA,CAEjBA,CAAM,CAAA,IAAA,CAAK,KAAK,CAIpBL,CAAAA,CAAAA,CAAiB,IAAIE,CAAKG,CAAAA,CAAK,EAExBA,CACX","file":"chunk-I7VUJT6Z.mjs","sourcesContent":["import path from 'node:path'\r\nimport { getPackageRootPath } from './getPackageRootPath'\r\nimport fs from 'node:fs'\r\n\r\n/**\r\n * 返回当前项目所使用的包管理工具\r\n * @returns\r\n */\r\n// 缓存项目的包管理工具，避免重复检查\r\nconst packageToolCache = new Map<string, ('pnpm' | 'npm' | 'yarn')[]>();\r\n\r\nexport function getPackageTool(): ('pnpm' | 'npm' | 'yarn')[] {\r\n    const cwd = process.cwd();\r\n    \r\n    // 优化1: 使用缓存避免重复计算\r\n    if (packageToolCache.has(cwd)) {\r\n        return packageToolCache.get(cwd)!;\r\n    }\r\n    \r\n    const projectFolder = getPackageRootPath(cwd);\r\n    if (projectFolder == null) {\r\n        throw new Error('未发现package.json,当前工程不是NPM项目');\r\n    }\r\n    \r\n    const tools: ('pnpm' | 'npm' | 'yarn')[] = [];\r\n    \r\n    // 优化2: 一次性检查所有锁文件，避免多次文件系统操作\r\n    const pnpmLockExists = fs.existsSync(path.join(projectFolder, 'pnpm-lock.yaml'));\r\n    const yarnLockExists = !pnpmLockExists && fs.existsSync(path.join(projectFolder, 'yarn.lock'));\r\n    \r\n    if (pnpmLockExists) {\r\n        tools.push('pnpm');\r\n    } else if (yarnLockExists) {\r\n        tools.push('yarn');\r\n    } else {\r\n        tools.push('npm');\r\n    }\r\n    \r\n    // 保存到缓存\r\n    packageToolCache.set(cwd, tools);\r\n    \r\n    return tools;\r\n}\r\n"]}