Enhanced peer dependency resolution for npm, yarn, and pnpm
npm install epd


A smart CLI tool that intelligently resolves peer dependency conflicts across npm, yarn, and pnpm projects.
- Intelligent Resolution: Automatically finds the best version that satisfies the most peer dependency requirements
- Multi-Package Manager Support: Works with npm, yarn, and pnpm
- Workspace Aware: Handles monorepo structures with multiple packages
- Registry Integration: Queries npm registry for available versions
- Detailed Reporting: Shows conflicts and resolution strategies
- Non-Destructive: Preserves your original package.json
- Zero Configuration: Works out of the box
``bashInstall globally
npm install -g epd
š Usage
Use
epd as a drop-in replacement for your package manager's install command:$3
`shellscript
Install all dependencies from package.json
epd installOr simply
epd
`$3
`shellscript
Add a new package
epd add reactAdd multiple packages
epd add react react-domAdd with specific version
epd add react@18.2.0
`$3
`shellscript
Scan for unused dependencies
epd scanCheck for security vulnerabilities
epd securityCheck for outdated dependencies
epd outdatedInteractive dependency resolution
epd interactiveView current configuration
epd config
`$3
By default, epd automatically detects your package manager based on lockfiles or availability. You can override this with the
--pm flag:`shellscript
Force using npm
epd install --pm=npmForce using yarn
epd add react --pm=yarnForce using pnpm
epd add react --pm=pnpm
`š How It Works
When you run
epd, it:1. Analyzes your project structure and detects workspaces
2. Collects all peer dependencies from all packages
3. Resolves version conflicts using a sophisticated algorithm:
- First tries to find a version that satisfies all requirements
- If none exists, queries the npm registry for available versions
- Selects the version that satisfies the most requirements
4. Creates a temporary package.json with the resolved dependencies
5. Installs packages using your preferred package manager
6. Restores your original package.json
š ļø Command Line Options
| Option | Description |
|--------|-------------|
|
--pm= | Force a specific package manager (npm, yarn, pnpm) |
| --debug | Enable debug mode with verbose logging |
| --interactive | Enable interactive conflict resolution |
| --config= | Use custom configuration file |āļø Configuration
Create a
.epdrc file in your project root:`json
{
"packageManager": "npm",
"autoResolve": true,
"interactive": false,
"ignorePackages": ["@types/node"],
"preferredVersions": {
"react": "^18.0.0"
},
"timeout": 30000,
"retries": 3
}
`
ā ļø Troubleshooting
$3
If you see an error like:
`plaintext
ā Forced package manager pnpm is not installed or not in PATH
`Make sure the specified package manager is installed and available in your PATH.
$3
If you encounter registry connection problems:
`plaintext
ā Error fetching versions for react: HTTP error! Status: 404
`Check your internet connection and ensure you have access to the npm registry. If you're using a custom registry, verify it's correctly configured in your npm settings.
$3
If you see:
`plaintext
Command 'epd' not found
`Ensure the package is properly installed globally. You may need to add the npm global bin directory to your PATH.
š¤ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
1. Fork the repository
2. Create your feature branch (
git checkout -b feature/amazing-feature)
3. Commit your changes (git commit -m 'Add some amazing feature')
4. Push to the branch (git push origin feature/amazing-feature)
5. Open a Pull Request
š License
This project is licensed under the MIT License - see the LICENSE file for details.
š Acknowledgements
- Inspired by npm's
--legacy-peer-deps` flag- Complete Documentation - Comprehensive guide with all commands and examples
- API Reference - TypeScript interfaces and programmatic usage
- Examples - Real-world usage scenarios and workflows
- Contributing - Development setup and contribution guidelines
- Complete Feature Set: All advanced functionality implemented including smart resolution, health scoring, workspace optimization, and more
- TypeScript Migration: Full TypeScript codebase with comprehensive type definitions
- Enhanced CLI: 15+ commands covering all aspects of dependency management
- Comprehensive Testing: Full test suite with Node's native test runner
- Complete Documentation: Extensive docs with examples and API reference