UNPKG

@tianyio/quality-helper

Version:

A comprehensive quality helper tool for project scaffolding and management

1 lines 7.24 kB
{"version":3,"file":"update-dependencies-Dk3dz_G3.cjs","sources":["../src/update-dependencies.ts"],"sourcesContent":["'use strict'\nimport { join } from 'path'\nimport ora from 'ora'\nimport chalk from 'chalk'\nimport { cleanDependencies, installProjectDependencies } from './utils/install.ts'\nimport { createDependencyManager } from './utils/dependency.ts'\nimport { FileOperations } from './core/FileOperations.ts'\nimport { Discovery } from './core/Discovery.ts'\nimport { UIService } from './services/UIService.ts'\nimport { createDependencyValidator } from './utils/dependency-validator.ts'\n\n/**\n * 更新项目依赖\n */\nexport async function updateDependencies(): Promise<void> {\n const { projectPath } = await Discovery.findProjectRoot()\n if (!projectPath) {\n throw new Error('未找到项目根目录(package.json)')\n }\n\n // 交互式选择依赖列表文件\n const uiService = new UIService()\n const selectedFile = await uiService.selectDependencyFile(projectPath)\n\n // 使用依赖表更新并安装\n await updateToRecommendedVersions(projectPath, selectedFile)\n}\n\n/**\n * 更新到推荐版本\n */\nasync function updateToRecommendedVersions(\n projectRoot: string,\n customDependencyFile?: string | null\n): Promise<void> {\n const spinner = ora('正在更新依赖到推荐版本...').start()\n\n try {\n let dependencyManager = createDependencyManager()\n\n // 如果选择了自定义依赖文件,验证并使用\n if (customDependencyFile) {\n spinner.text = '正在验证依赖列表文件...'\n const validator = createDependencyValidator()\n const validationResult = await validator.validateDependencyFile(customDependencyFile)\n\n if (!validationResult.isValid) {\n spinner.fail('依赖列表文件验证失败')\n validator.printValidationResult(validationResult, customDependencyFile)\n console.log(chalk.yellow('\\n⚠️ 将使用项目默认依赖列表'))\n dependencyManager = createDependencyManager()\n } else {\n spinner.succeed('依赖列表文件验证通过')\n validator.printValidationResult(validationResult, customDependencyFile)\n\n // 使用自定义依赖列表创建依赖管理器\n const customConfig: {\n customDependencies?: Record<string, string>\n customDevDependencies?: Record<string, string>\n } = {}\n if (validationResult.dependencies) {\n customConfig.customDependencies = validationResult.dependencies\n }\n if (validationResult.devDependencies) {\n customConfig.customDevDependencies = validationResult.devDependencies\n }\n dependencyManager = createDependencyManager(customConfig)\n }\n }\n\n // 更新项目依赖配置\n spinner.text = '正在分析依赖配置...'\n const hasUpdates = await dependencyManager.updateToRecommendedVersions(projectRoot)\n spinner.stop()\n\n // 如果没有更新,提前退出\n if (!hasUpdates) {\n console.log(chalk.green('✅ 所有依赖已是最新版本'))\n return\n }\n\n // 检查是否已安装过依赖\n const nodeModulesExists = await FileOperations.exists(join(projectRoot, 'node_modules'))\n if (nodeModulesExists) {\n spinner.start('正在清理现有依赖...')\n await cleanDependencies(projectRoot)\n spinner.stop()\n }\n\n // 检测包管理器并安装依赖\n spinner.start('正在安装依赖...')\n await installProjectDependencies(projectRoot)\n spinner.succeed('依赖更新完成')\n } catch (error: any) {\n spinner.fail('依赖更新失败')\n\n // 如果是 pnpm 冲突错误,提供解决建议\n if (error.message?.includes('ERR_PNPM_INCLUDED_DEPS_CONFLICT')) {\n console.log('\\n💡 解决建议:')\n console.log('1. 手动删除 node_modules 目录和 pnpm-lock.yaml 文件')\n console.log('2. 运行 \"pnpm install\" 重新安装依赖')\n console.log('3. 或者选择 \"清理并重新安装\" 选项')\n }\n\n throw error\n }\n}\n\n/**\n * 检查依赖状态\n */\nexport async function checkDependencies(): Promise<void> {\n const { projectPath } = await Discovery.findProjectRoot()\n if (!projectPath) {\n throw new Error('未找到项目根目录(package.json)')\n }\n\n await checkDependencyStatus(projectPath)\n}\n\nasync function checkDependencyStatus(projectRoot: string): Promise<void> {\n const spinner = ora('正在检查依赖状态...').start()\n\n try {\n const dependencyManager = createDependencyManager()\n\n // 分析依赖状态\n const analysis = await dependencyManager.analyzeDependencies(projectRoot)\n\n spinner.stop()\n\n // 生成详细报告\n dependencyManager.generateReport(analysis)\n\n // 检查兼容性\n dependencyManager.checkCompatibility(analysis)\n\n console.log('\\n提示: 运行 \"quality-helper update-deps\" 更新依赖')\n } catch (error: any) {\n spinner.fail('依赖状态检查失败')\n throw error\n }\n}\n"],"names":["async","projectPath","Discovery","findProjectRoot","Error","projectRoot","spinner","ora","start","dependencyManager","createDependencyManager","analysis","analyzeDependencies","stop","generateReport","checkCompatibility","console","log","error","fail","checkDependencyStatus","uiService","UIService","selectedFile","selectDependencyFile","customDependencyFile","text","validator","createDependencyValidator","validationResult","validateDependencyFile","isValid","succeed","printValidationResult","customConfig","dependencies","customDependencies","devDependencies","customDevDependencies","chalk","yellow","hasUpdates","updateToRecommendedVersions","green","FileOperations","exists","join","cleanDependencies","installProjectDependencies","message","includes"],"mappings":"+PA+GAA,iBACE,MAAMC,YAAEA,SAAsBC,EAAAA,UAAUC,kBACxC,IAAKF,EACH,MAAM,IAAIG,MAAM,gCAMpBJ,eAAqCK,GACnC,MAAMC,EAAUC,EAAI,eAAeC,QAEnC,IACE,MAAMC,EAAoBC,EAAAA,0BAGpBC,QAAiBF,EAAkBG,oBAAoBP,GAE7DC,EAAQO,OAGRJ,EAAkBK,eAAeH,GAGjCF,EAAkBM,mBAAmBJ,GAErCK,QAAQC,IAAI,6CACd,OAASC,GAEP,MADAZ,EAAQa,KAAK,YACPD,CACR,CACF,CAzBQE,CAAsBnB,EAC9B,6BAxGAD,iBACE,MAAMC,YAAEA,SAAsBC,EAAAA,UAAUC,kBACxC,IAAKF,EACH,MAAM,IAAIG,MAAM,0BAIlB,MAAMiB,EAAY,IAAIC,YAChBC,QAAqBF,EAAUG,qBAAqBvB,SAS5DD,eACEK,EACAoB,GAEA,MAAMnB,EAAUC,EAAI,kBAAkBC,QAEtC,IACE,IAAIC,EAAoBC,EAAAA,0BAGxB,GAAIe,EAAsB,CACxBnB,EAAQoB,KAAO,gBACf,MAAMC,EAAYC,EAAAA,4BACZC,QAAyBF,EAAUG,uBAAuBL,GAEhE,GAAKI,EAAiBE,QAKf,CACLzB,EAAQ0B,QAAQ,cAChBL,EAAUM,sBAAsBJ,EAAkBJ,GAGlD,MAAMS,EAGF,CAAA,EACAL,EAAiBM,eACnBD,EAAaE,mBAAqBP,EAAiBM,cAEjDN,EAAiBQ,kBACnBH,EAAaI,sBAAwBT,EAAiBQ,iBAExD5B,EAAoBC,EAAAA,wBAAwBwB,EAC9C,MApBE5B,EAAQa,KAAK,cACbQ,EAAUM,sBAAsBJ,EAAkBJ,GAClDT,QAAQC,IAAIsB,EAAMC,OAAO,qBACzB/B,EAAoBC,EAAAA,yBAkBxB,CAGAJ,EAAQoB,KAAO,cACf,MAAMe,QAAmBhC,EAAkBiC,4BAA4BrC,GAIvE,GAHAC,EAAQO,QAGH4B,EAEH,YADAzB,QAAQC,IAAIsB,EAAMI,MAAM,uBAKMC,iBAAeC,OAAOC,EAAAA,KAAKzC,EAAa,mBAEtEC,EAAQE,MAAM,qBACRuC,EAAAA,kBAAkB1C,GACxBC,EAAQO,QAIVP,EAAQE,MAAM,mBACRwC,EAAAA,2BAA2B3C,GACjCC,EAAQ0B,QAAQ,SAClB,OAASd,GAWP,MAVAZ,EAAQa,KAAK,UAGTD,EAAM+B,SAASC,SAAS,qCAC1BlC,QAAQC,IAAI,cACZD,QAAQC,IAAI,8CACZD,QAAQC,IAAI,+BACZD,QAAQC,IAAI,yBAGRC,CACR,CACF,CAjFQwB,CAA4BzC,EAAasB,EACjD"}