UNPKG

@tianyio/quality-helper

Version:

A comprehensive quality helper tool for project scaffolding and management

96 lines (95 loc) 4.07 kB
import { join } from "path"; import ora from "ora"; import chalk from "chalk"; import { d as createDependencyValidator, c as createDependencyManager, e as cleanDependencies, i as installProjectDependencies } from "./utils-JjdnUrNK.js"; import { F as FileOperations } from "./core-file-ops-d43o99eg.js"; import { D as Discovery } from "./core-discovery-DU1aPJk0.js"; import { U as UIService } from "./services-DXX3cT7y.js"; async function updateDependencies() { const { projectPath } = await Discovery.findProjectRoot(); if (!projectPath) { throw new Error("未找到项目根目录(package.json)"); } const uiService = new UIService(); const selectedFile = await uiService.selectDependencyFile(projectPath); await updateToRecommendedVersions(projectPath, selectedFile); } async function updateToRecommendedVersions(projectRoot, customDependencyFile) { const spinner = ora("正在更新依赖到推荐版本...").start(); try { let dependencyManager = createDependencyManager(); if (customDependencyFile) { spinner.text = "正在验证依赖列表文件..."; const validator = createDependencyValidator(); const validationResult = await validator.validateDependencyFile(customDependencyFile); if (!validationResult.isValid) { spinner.fail("依赖列表文件验证失败"); validator.printValidationResult(validationResult, customDependencyFile); console.log(chalk.yellow("\n⚠️ 将使用项目默认依赖列表")); dependencyManager = createDependencyManager(); } else { spinner.succeed("依赖列表文件验证通过"); validator.printValidationResult(validationResult, customDependencyFile); const customConfig = {}; if (validationResult.dependencies) { customConfig.customDependencies = validationResult.dependencies; } if (validationResult.devDependencies) { customConfig.customDevDependencies = validationResult.devDependencies; } dependencyManager = createDependencyManager(customConfig); } } spinner.text = "正在分析依赖配置..."; const hasUpdates = await dependencyManager.updateToRecommendedVersions(projectRoot); spinner.stop(); if (!hasUpdates) { console.log(chalk.green("✅ 所有依赖已是最新版本")); return; } const nodeModulesExists = await FileOperations.exists(join(projectRoot, "node_modules")); if (nodeModulesExists) { spinner.start("正在清理现有依赖..."); await cleanDependencies(projectRoot); spinner.stop(); } spinner.start("正在安装依赖..."); await installProjectDependencies(projectRoot); spinner.succeed("依赖更新完成"); } catch (error) { spinner.fail("依赖更新失败"); if (error.message?.includes("ERR_PNPM_INCLUDED_DEPS_CONFLICT")) { console.log("\n💡 解决建议:"); console.log("1. 手动删除 node_modules 目录和 pnpm-lock.yaml 文件"); console.log('2. 运行 "pnpm install" 重新安装依赖'); console.log('3. 或者选择 "清理并重新安装" 选项'); } throw error; } } async function checkDependencies() { const { projectPath } = await Discovery.findProjectRoot(); if (!projectPath) { throw new Error("未找到项目根目录(package.json)"); } await checkDependencyStatus(projectPath); } async function checkDependencyStatus(projectRoot) { const spinner = ora("正在检查依赖状态...").start(); try { const dependencyManager = createDependencyManager(); const analysis = await dependencyManager.analyzeDependencies(projectRoot); spinner.stop(); dependencyManager.generateReport(analysis); dependencyManager.checkCompatibility(analysis); console.log('\n提示: 运行 "quality-helper update-deps" 更新依赖'); } catch (error) { spinner.fail("依赖状态检查失败"); throw error; } } export { checkDependencies as c, updateDependencies as u }; //# sourceMappingURL=update-dependencies-DXfprxby.js.map