![]()
Resolving NPM/Yarn Dependency Conflicts
Identifying Dependency Conflicts
Common signs of dependency conflicts:
ERESOLVEerrors during installationCannot find moduleerrors at runtime- Multiple versions of same package in
node_modules - Unexpected behavior or missing features
Step-by-Step Solutions
1. Basic Conflict Resolution
For npm:
npm install --legacy-peer-deps # Temporary workaround
npm dedupe # Attempt to reduce duplicates
For Yarn:
yarn install --flat # Identify conflicts
yarn why <package-name> # Check why a package is included
2. Force Clean Installation
# Remove existing installations
rm -rf node_modules package-lock.json yarn.lock
# Reinstall (pick one)
npm install
# OR
yarn install
3. Manual Version Resolution
Edit package.json to specify exact versions:
{
"dependencies": {
"react": "18.2.0", // Exact version
"lodash": "^4.17.21" // Caret range
},
"resolutions": { // Yarn specific
"react-dom": "18.2.0"
}
}
4. Advanced Techniques
Using Yarn resolutions (for Yarn only):
{
"resolutions": {
"**/react": "18.2.0",
"**/react-dom": "18.2.0"
}
}
For npm (v8+):
npm install --package-lock-only
npm install --omit=peer
5. Check Dependency Tree
npm ls <package-name> # Show dependency tree
# OR
yarn list --pattern <package-name>
Prevention Strategies
- Use consistent version specifiers:
~1.2.3= patch updates only^1.2.3= minor updates1.2.3= exact version
- Regularly update dependencies:
npm outdated
# OR
yarn outdated
- Use lockfiles:
- Commit
package-lock.jsonoryarn.lock - Ensures reproducible installs
- Consider monorepo tools:
- Lerna
- Nx
- Yarn Workspaces
Common Conflict Patterns
React Duplicates
# Often shows as multiple React versions
npm ls react
# Solution: Ensure all React packages use same version
Babel/Webpack Plugins
# Version mismatch between core and plugins
yarn why @babel/core
# Solution: Match major versions
Peer Dependencies
# Common with React libraries
npm install --legacy-peer-deps
# OR specify correct peer dependency versions
