npm rm can cause node_modules to be in invalid state #5698

Closed
Raynos opened this Issue Jul 15, 2014 · 2 comments

Comments

Projects
None yet
3 participants
@Raynos
Contributor

Raynos commented Jul 15, 2014

This is a "dependency tree realization" bug.

The problem here is that invoking npm rm module may cause the node_modules tree to be in an invalid state because npm rm is not dedupe aware.

Reproduction case:

mkdir ~/tmp/foobar
cd ~/tmp/foobar
npm init
npm i routes@1.1.0 -S
npm i routes-router@3.3.0 -S
npm ls
echo "npm ls is good $?"
npm rm routes -S
npm ls
echo "npm ls should be good but is bad $?"

The expected output is that the second npm ls exits zero instead of one.

Suggested fix:

Break the logic that is lib/update.js that finds all copies of module in a node_modules tree out into a function.

Then use that function to find all copies in lib/uninstall.js and then just invoke npm.commands.install for each one.

@Raynos

This comment has been minimized.

Show comment Hide comment
@Raynos

Raynos Jul 15, 2014

Contributor
Contributor

Raynos commented Jul 15, 2014

@othiym23 othiym23 added the bug label Sep 18, 2014

@othiym23 othiym23 added this to the multi-stage install milestone Sep 18, 2014

@iarna

This comment has been minimized.

Show comment Hide comment
@iarna

iarna Dec 15, 2014

Owner

I'm closing this as it will be fixed by the feature implemented in #6936, further discussion should happen there.

Owner

iarna commented Dec 15, 2014

I'm closing this as it will be fixed by the feature implemented in #6936, further discussion should happen there.

@iarna iarna closed this Dec 15, 2014

@iarna iarna locked and limited conversation to collaborators Jun 24, 2015

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.