UNPKG

devghost

Version:

👻 Find dead code, dead imports, and dead dependencies before they haunt your project

63 lines • 2.77 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.removeDependency = removeDependency; exports.removeDependencies = removeDependencies; const node_child_process_1 = require("node:child_process"); const node_fs_1 = __importDefault(require("node:fs")); const node_path_1 = __importDefault(require("node:path")); const chalk_1 = __importDefault(require("chalk")); const packageManager_1 = require("../utils/packageManager"); async function removeDependency(packageName, projectRoot, isDev, dryRun = false) { const packageManager = (0, packageManager_1.detectPackageManager)(projectRoot); const uninstallCommand = (0, packageManager_1.getUninstallCommand)(packageManager, packageName, isDev); try { if (dryRun) { console.log(chalk_1.default.blue(`[Dry Run] Would execute: ${uninstallCommand} in ${projectRoot}`)); return { success: true, packageName, }; } else { (0, node_child_process_1.execSync)(uninstallCommand, { cwd: projectRoot, stdio: 'inherit' }); return { success: true, packageName, }; } } catch (error) { const errorMessage = error.message; // Check for common error patterns and provide friendly messages let friendlyMessage = errorMessage; if (errorMessage.includes('ENOTFOUND') || errorMessage.includes('ETIMEDOUT')) { friendlyMessage = 'Network error - check your internet connection'; } else if (errorMessage.includes('ENOENT')) { friendlyMessage = 'Package manager not found - ensure npm/yarn/pnpm is installed'; } else if (errorMessage.toLowerCase().includes('permission')) { friendlyMessage = 'Permission denied - try running with elevated privileges'; } return { success: false, packageName, error: friendlyMessage, }; } } async function removeDependencies(packages, projectRoot, _includeDevDeps, dryRun = false) { const pkgJsonPath = node_path_1.default.join(projectRoot, 'package.json'); const pkgJson = JSON.parse(node_fs_1.default.readFileSync(pkgJsonPath, 'utf-8')); const results = []; for (const packageName of packages) { const isDev = pkgJson.devDependencies && packageName in pkgJson.devDependencies; const result = await removeDependency(packageName, projectRoot, isDev, dryRun); results.push(result); } return results; } //# sourceMappingURL=dependencyFixer.js.map