Uninstall a Package with npm

Sep 21, 2020

npm makes it easy to uninstall packages. Running npm uninstall <package> uninstalls the given package. For example, when you run npm uninstall mongoose from the Mastering JS GitHub repo, npm prints the below output:

$ npm uninstall mongoose

removed 22 packages and audited 1204 packages in 3.311s
found 0 vulnerabilities

$ 

After running npm uninstall mongoose, the node_modules directory no longer contains Mongoose, and calling require('mongoose') will fail.

$ ls -l node_modules/ | grep "mongoose$"
$ 
$ node -e "require('mongoose')"
internal/modules/cjs/loader.js:800
    throw err;
    ^

Error: Cannot find module 'mongoose'
$ 

What Does npm uninstall Do?

npm uninstall does a little more than just rm -rf ./node_modules/mongoose. Although deleting the node_modules/mongoose directory works, it leaves Mongoose's dependencies in node_modules.

Notice that the output of npm uninstall says it removed 22 packages:

$ npm uninstall mongoose

removed 22 packages and audited 1204 packages in 3.311s
found 0 vulnerabilities

$ 

Those are packages that Mongoose depends on, but no other package depends on, so they're safe to remove.

The --no-save Flag

npm uninstall also removes the package from your package.json, which means subsequent npm install won't install that package. This is a convenience that saves you an extra step when you want to permanently remove a package from a JavaScript project.

However, there are cases when you may want to uninstall a package without modifying package.json. For example, you may want to test that your app still works even if a certain package is missing. In that case, you can use npm uninstall --no-save:

$ npm uninstall mongoose --no-save

removed 22 packages and audited 1204 packages in 3.311s
found 0 vulnerabilities

$ 
$ cat package.json | grep "mongoose"
    "mongoose": "5.x",
    "mongoose-beautiful-unique-validation": "7.x",
$ 

More Npm Tutorials