ยท English ยท Korean
Packmate is a modern CLI tool for managing, updating, and cleaning up your Node.js project dependencies.
It supports npm, pnpm, and yarn. With an intuitive interactive UI and powerful performance optimizations, Packmate helps you keep your project healthy and up-to-dateโfaster and safer than ever.
- โก Performance: 6x faster with 3-level caching system (memory + disk + network)
- ๐ฏ Accuracy: 90%+ unused package detection with dev tool intelligence
- ๐ก๏ธ Safety: Smart fallback for package managers, unused packages excluded from updates
- ๐จ Clarity: Grouped UI sessions (Patch/Minor/Major) with color-coded updates
- ๐ง Flexibility: Full configuration support via
packmate.config.json - ๐ Modern: Clean, professional English interface with intuitive workflows
- 3-Level Caching System: Memory โ Disk (1hr TTL) โ Network
- First run: Standard speed
- Second run: 6x faster with cached registry data
- Parallel Processing: Multi-core CPU utilization for file scanning (2-4x faster)
- Adaptive Concurrency: Dynamic request throttling based on CPU cores (8-16 concurrent)
- Enhanced Unused Detection (90%+ accuracy):
- Dynamic import detection:
import('module') - Conditional require detection:
try-catch,ifblocks - DevDependencies intelligence: Recognizes build tools, linters, type definitions
- Cross-validation: precinct + depcheck for high confidence
- Dynamic import detection:
- Update Detection:
- Grouped by Patch/Minor/Major with color coding
- Unused packages automatically excluded from update suggestions
- Semver-aware version comparison
- Installation Detection: Finds declared but not installed packages
- Grouped UI Sessions:
- ๐น Patch Updates (Green): Bug fixes, safe to update
- ๐ธ Minor Updates (Yellow): New features, backward compatible
- ๐ถ Major Updates (Red): Breaking changes, requires review
- ๐๏ธ Unused Packages: High/Medium confidence levels
- ๐ฅ Not Installed: Missing declared dependencies
- โ Up-to-date: Informational list (non-selectable)
- Safety Features:
- Confirmation prompt for major updates
- Breaking change warnings
- Clear action summaries
- Visual Enhancements:
- Color-coded version changes
- Progress bars for long operations
- Fixed console box alignment
- Smart Package Manager Detection:
- Auto-detects from lock files (pnpm-lock.yaml, yarn.lock, package-lock.json)
- Verifies installation status
- Auto-fallback to available manager with helpful tips
- Configurable Options:
- Custom ignore patterns (glob support)
- Analysis modes (conservative/moderate/aggressive)
- UI customization (default selections, color schemes)
- Cache settings (duration, location)
npm install -g packmate
# or
pnpm add -g packmate
# or
yarn global add packmateYou can also run it instantly with:
npx packmateFrom your project root, just run:
packmateTypical Workflow Example:
โ ๐ฆ Packmate: Dependency Updates & Cleanup
โ
โ Info โโโโโโโโโโโโโโโโโโฎ
โ Package Manager: npm โ
โโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โ
Progress |โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ| 17/17 (100%)
โ โ
Found 3 packages with available updates
โ โ
Unused package analysis complete
โ โ
Found 0 not installed packages
๐ Analysis Results:
Updates available: 3
Unused: 1
Not installed: 0
Up-to-date: 13
๐ถ Major Updates (3)
โ ๏ธ Breaking changes possible - Review carefully
โ
โ Select major updates (caution required):
โ โผ globby 13.2.2 โ 15.0.0 [MAJOR]
โ โป p-retry 6.2.1 โ 7.1.0 [MAJOR]
โ โป precinct 10.0.1 โ 12.2.0 [MAJOR]
โ
โ ๏ธ Proceed with 1 major update(s)? Breaking changes may be included.
โ Yes
โ
๐๏ธ Unused Packages (High Confidence: 1)
Safe to remove
โ
โ Select packages to remove:
โ none
โ
โ Show already up-to-date packages (13)?
โ No
โ
โ Actions โโโโโโโโโโโโโโโโโโโโฎ
โ ๐ Actions to execute: โ
โ - update: [email protected] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โ
> npm install [email protected]
โ๏ธ Package update completed: [email protected]
โ
Complete:
Updated: 1
Removed: 0
Installed: 0
โ
โ Packmate complete! ๐- Node.js v16 or later (recommended v18+)
- Supports npm, yarn, and pnpm
- Works on Mac, Linux, and Windows
No extra options neededโjust run packmate in your project directory. All selections (update, remove, install) are interactive.
Packmate supports configuration via packmate.config.json or the packmate field in your package.json.
{
"ignorePatterns": ["@types/*", "eslint-*"],
"analysisMode": {
"unused": "moderate",
"devDeps": true
},
"ui": {
"groupSessions": true,
"colorScheme": "auto",
"defaultChecked": {
"updateAvailable": true,
"unused": false,
"notInstalled": true,
"latest": false
}
},
"detection": {
"dynamicImport": true,
"conditionalRequire": true,
"ignoreUnused": [
"eslint",
"prettier",
"jest",
"webpack"
]
}
}- ignorePatterns: Array of glob patterns to ignore packages (e.g.,
["@types/*"]) - analysisMode.unused: Detection mode -
"conservative"|"moderate"|"aggressive" - analysisMode.devDeps: Whether to analyze devDependencies separately
- ui.groupSessions: Enable grouped UI sessions (Patch/Minor/Major)
- ui.defaultChecked: Default selection states for each package type
- detection.dynamicImport: Enable dynamic import detection
- detection.conditionalRequire: Enable conditional require detection
- detection.ignoreUnused: List of packages to always ignore in unused detection
Packmate automatically caches registry responses for faster subsequent runs. Clear cache if needed:
# Windows
del /q %TEMP%\packmate-cache\*
# Linux/Mac
rm -rf /tmp/packmate-cache/*Cache location:
- Windows:
C:\Users\<user>\AppData\Local\Temp\packmate-cache - Linux/Mac:
/tmp/packmate-cache
Contributions are always welcome! Please feel free to open an issue or submit a pull request.
Made with โค๏ธ by AGUMON ๐ฆ