How can I uninstall npm modules in Node.js? - node.js

As commonly known, any npm module can be installed by running a simple command: npm install <module_name>.
I have installed a few modules that I do not use any more and I just want to get them off. I have a few questions regarding this:
Do we have any command or process to uninstall a module from the root (something like npm uninstall <module_name>)
or will simply removing the module files do?
How does it affect us if we keep the unused modules?

The command is simply npm uninstall <name>
The Node.js documents https://npmjs.org/doc/ have all the commands that you need to know with npm.
A local install will be in the node_modules/ directory of your application. This won't affect the application if a module remains there with no references to it.
If you're removing a global package, however, any applications referencing it will crash.
Here are different options:
npm uninstall <name> removes the module from node_modules but does not update package.json
npm uninstall <name> --save also removes it from dependenciesin package.json
npm uninstall <name> --save-dev also removes it from devDependencies in package.json
npm uninstall -g <name> --save also removes it globally

If it doesn't work with npm uninstall <module_name> try it globally by typing -g.
Maybe you just need to do it as an superUser/administrator with sudo npm uninstall <module_name>.

Well, to give a complete answer to this question, there are two methods (for example we call the installed module as module1):
To remove module1 without changing package.json:
npm uninstall module1
To remove module1 with changing package.json, and removing it from the dependencies in package.json:
npm uninstall --save module1
Note: to simplify the above mentioned commands, you can use -S instead of --save , and can use remove, rm, r, un, unlink instead of uninstall

I just install stylus by default under my home dir, so I just use npm uninstall stylus to detach it, or you can try npm rm <package_name> out.

To uninstall the Node.js module:
npm uninstall <module_name>
This will remove the module from folder node_modules, but not from file package.json. So when we do npm install again it will download the module.
So to remove the module from file package.json, use:
npm uninstall <module_name> --save
This also deletes the dependency from file package.json.
And if you want to uninstall any globally module you can use:
npm -g uninstall <module_name> --save
This will delete the dependency globally.

To remove packages in folder node_modules in bulk, you could also remove them from file package.json, save it, and then run npm prune in the terminal.
This will remove those packages, which exist in the file system, but are not used/declared in file package.json.
P.S.: This is particularly useful on Windows, as you may often encounter problems with being unable to delete some files due to the "exceeded path length limit".

Sometimes npm uninstall -g packageName doesn’t work.
In this case you can delete package manually.
On Mac, go to folder /usr/local/lib/node_modules and delete the folder with the package you want. That's it. Check your list of globally installed packages with this command:
npm list -g --depth=0

You can also run the following as shorthand:
npm un packageName or npm rm packageName
Note: Add -g at end of command to uninstall global packages.

Update for npm 5:
As of npm 5.0.0, installed/uninstalled modules are added/removed as a dependency by default, so the --save option is no longer needed.
Run
npm uninstall <package>
For example:
npm uninstall mongodb
It will remove the module from the node_modules folder and also the package.json file.

Alias can be used to to uninstall node_modules package
un alias for uninstall
removes single package
- npm un <PACKAGE_NAME>
removes multiple packages by adding space between packages names
- npm un <PACKAGE_NAME_1> <PACKAGE_NAME_2>
removes all node_modules packages
- rm -rf node_modules/

I found this out the hard way, even if it is seemingly obvious.
I initially tried to loop through the node_modules directory running npm uninstall module-name with a simple for loop in a script. I found out it will not work if you call the full path, e.g.,
npm uninstall module-name
was working, but
npm uninstall /full/path/to/node_modules/module-name
was not working.

For Windows users - if you want to remove all the Node.js modules installed at once:
Open a PowerShell window
Go inside the node_modules folder (cd node_modules)
Run this command - "npm uninstall (Get-ChildItem).Name"
It will uninstall all the modules.

To uninstall a module using npm, you can use:
npm uninstall moduleName
Also, if you want to uninstall and want the change to be reflected in your package.json then you can use the --save flag, like this:
npm uninstall moduleName --save
OR
npm uninstall -S
And if you want to uninstall a module from devDependencies and want the change to be reflected in package.json then you can use -D flag, like this:
npm uninstall moduleName -D

The uninstall option didn't work for me when I tried to use the same command to the one I used in installing (as I was installing with the #latest directive)
So for example, I installed a package like this:
npm install #ngtools/webpack#latest
And then I wanted to uninstall it, so I used the same command (including #latest):
npm uninstall #ngtools/webpack#latest
So the above uninstall didn't work. I have to remove the #latest, and then it worked well:
npm uninstall #ngtools/webpack

In npm v6+ npm uninstall <package_name> removes it both in folder node_modules and file package.json.

Simply,
npm un module_name
OR
npm uninstall module_name
Make sure you uninstall it in the same directory as the package.json and node_modules folder.

Additionally, if you've started using yarn, in place of npm:
yarn remove <package-name>
Is the equivalent of:
npm uninstall <package-name> --save
This will
- remove the package from package.json, as well as
- uninstall it from your project's node-modules folder

# Log in as root (might be required depending on install)
su -
# List all global packages
npm ls -g --depth=0
# List all local (project) packages
npm ls -p --depth=0
# Remove all global packages
npm ls -g --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -g rm
# Remove all local packges
npm ls -p --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -p rm
# NOTE (optional): to use node with sudo you can add the bins to /usr/bin
# NOTE $PATHTONODEINSTALL is where node is installed (e.g. /usr/local/node)
sudo ln -s $PATHTONODEINSTALL/bin/node /usr/bin/node
sudo ln -s $PATHTONODEINSTALL/bin/npm /usr/bin/npm

The simplest solution is:
npm uninstall packageName --save-dev
See upper level packages names in the your project:
npm list --depth=0
The output will be like:
app#0.1.0 /home/jackkobec/projects/myAppName
├── packageName#packageVersion
├── express#4.16.4
Copy package name and execute npm uninstall command. Example for express package:
npm uninstall express --save-dev

If you want to uninstall an specific package using npm,
you can use the following command :
Sintax:
npm uninstall <package-name>
Example:
npm uninstall moment

If you want to uninstall a number of modules, then just run the npm uninstall.
Then go to file package.json and delete the unwanted module from there, and then just run the command npm install. It should fix your problem.

In case you are on Windows, run CMD as administrator and type:
npm -g uninstall <package name>

You can delete a Node.js module manually. For Windows,
Go to the node_modules directory of your repository.
Delete the Node.js module you don't want.
Don't forget to remove the reference to the module in your package.json file! Your project may still run with the reference, but you may get an error. You also don't want to leave unused references in your package.json file that can cause confusion later.

Related

How to uninstall NPM modules from the devDependencies in node.js?

How can I uninstall npm modules with devDependencies in Node.js?
Use command:
1)npm uninstall <name of the module>
Also you can use:
1) npm uninstall <name of the module>: to remove the module from node_modules, but not package.json
2) npm uninstall <name of the module> --save: to also remove it from dependencies in package.json
3) npm uninstall <name of the module> --save-dev: to also remove it from devDependencies in package.json
4) npm -g uninstall <name of the module> --save: to remove it globally
For dev dependencies you can preform one -of- two commands, depending on your situation.
If you simply want to remove the dependency you can use the following.
npm rm name-of-dependency
TIP: If you forget how the name was spelled, check your package.json file under "devDependencies".
If you installed the dependency as a "dev-dependency", and you decided after the fact that you wanted it installed as a regular "dependency" then you can simply install it using the -S flag, as shown below:
npm i -S name-of-dependency
TIP: It also works the other way around. To move a dependancy from the "dependencies" field in your package.json file, to the "devDependencies" field, swap out the -S flag for the -D flag.
The install command i and the rm command (also the -S and -D flags) are currently the method that NPM uses to document the process for removing packages, and or changing a packages dependency type.
SEE MORE ABOUT NPM CLI COMMANDS FOR INSTALLING & REMOVING PACKAGES HERE

How do I uninstall a package installed using npm link?

When installing a node package using sudo npm link in the package's directory, how can I uninstall the package once I'm done with development?
npm link installs the package as a symbolic link in the system's global package location ('/usr/local/lib`). This allows you to test the package while still developing it, without having to install it over and over again.
Which npm command do I need to run to remove the link again?
The package can be uninstalled using the same uninstall or rm command that can be used for removing installed packages. The only thing to keep in mind is that the link needs to be uninstalled globally - the --global flag needs to be provided.
In order to uninstall the globally linked foo package, the following command can be used (using sudo if necessary, depending on your setup and permissions)
sudo npm rm --global foo
This will uninstall the package.
To check whether a package is installed, the npm ls command can be used:
npm ls --global foo
you can use unlink to remove the symlink.
For Example:
cd ~/projects/node-redis
npm link
cd ~/projects/node-bloggy
npm link redis # links to your local redis
To reinstall from your package.json:
npm unlink redis
npm install
https://www.tachyonstemplates.com/npm-cheat-sheet/#unlinking-a-npm-package-from-an-application
npm link pain:
-Module name gulp-task
-Project name project-x
You want to link gulp-task:
1: Go to the gulp-task directory then do npm link this will symlink the project to your global modules
2: Go to your project project-x then do npm install make sure to remove the current node_modules directory
Now you want to remove this madness and use the real gulp-task, we have two options:
Option 1: Unlink via npm:
1: Go to your project and do npm unlink gulp-task this will remove the linked installed module
2: Go to the gulp-task directory and do npm unlink to remove symlink. Notice we didn't use the name of the module
3: celebrate
What if this didn't work, verify by locating your global installed module. My are location ls -la /usr/local/lib/node_modules/ if you are using nvm it will be a different path
Option 2: Remove the symlink like a normal linux guru
1: locate your global dependencies cd /usr/local/lib/node_modules/
2: removing symlink is simply using the rm command
rm gulp-task make sure you don't have / at the end
rm gulp-task/ is wrong 🔥🚨
rm gulp-task ✔️
npm uninstall --global my-package
This worked for me:
check the list of npm global packages:
npm ls --global
uninstall your package:
npm uninstall --global my-package
go to your testbed and unlink the linked package:
npm unlink my-package
navigate to your testbed directory and reinstall packages:
npm install
restart your testbed server
If you've done something like accidentally npm link generator-webapp after you've changed it, you can fix it by cloning the right generator and linking that.
git clone https://github.com/yeoman/generator-webapp.git;
# for fixing generator-webapp, replace with your required repository
cd generator-webapp;
npm link;
"npm install" replaces all dependencies in your node_modules installed with "npm link" with versions from npmjs (specified in your package.json)
You can undo the link command with the unlink command.
Create a link
In package
cd ./some-package
npm link
In comsumer
cd ./some-project
npm link some-package
Remove a link
Removing a link should be done in the reverse order - start from the consumers.
cd ./some-project
npm unlink some-package
In package
cd ./some-package
npm unlink

What's an npm command to install devDependencies globally?

I'd prefer to type a short command, like npm install -g, to setup a project's global dependencies, such as node-sass and jshint, than manually typing out npm install -g every single package. Is there an npm-idiomatic way to do this?
You are using npm install -g <pkg> wrong here. -g indicates, that it's no project dependencies, than rather you global (PC wide).
Those plugins are no devDependencies, but CLI runners. What you want is npm install --save-dev every single package upon initialisation. When you need to install those dependencies again you'd just run npm install and include something like ./node_modules/.bin/jshint to your package.json scripts in order not to depend on the CLIs.
I get you are not supposed to do it, but if you still want it, change your global location to make sure you have permissions. Install jq (either download it, or apt install jq) and then:
export NPM_CONFIG_PREFIX=~/npm-global
cat ./package.json | jq '.devDependencies | keys[] as $k | "\($k)#\(.[$k])"' | xargs -t npm install --global
This will create a list of packages and versions from the devDependencies section, pipe that into xargs, and call npm install with them.

npm installs all modules in /usr/local/lib/node_modules/

I have node.js 0.8.14 installed on Ubuntu 12.10. I created a directory in my home directory with a sub directory node_modules. I want to install some local node modules there but running
npm install myModule
in this directory installs this module in /usr/local/lib/node_modules/ (same behavior as installing the module with the -g flag
There is no node path in .bashrc.
Any idea how I can install local node modules?
After some further research I found the solution.
Running the command npm config ls revealed that the default config global=false (you see the default config with npm config ls -l) was overwritten by global=true in /home/vsdev/.npmrc and /usr/local/etc/npmrc.
Reverting this to global=false solved the issue.
That is odd.
FYI you don't need to create the node_modules directory, npm will do that for you
npm normally just installs to the current directory. Even if the package you are installing is configured to prefer global installation, npm will install it locally unless you explicitly pass the -g parameter.
can you run the following shell commands and confirm npm is really the real npm?
which npm
alias | grep npm
npm install load all in node_modules then it might be version 3 behaviour http://blog.npmjs.org/post/110924823920/npm-weekly-5 or as mentioned by #vsdev so once you make sure it version 3 behaviour and u want to go with it then its fine else follow below
1- uninstall all modules.. into the node_modules folder in your project then execute: npm uninstall *
2- Tell npm to install with legacy bundling for this one install:
npm install --legacy-bundling
A "permanent" alternative:
Set your npm config to always use legacy bundling...
npm set legacy-bundling=true
.. and run as usual:
npm install
*fetching dependencies with legacy bundling will take a lot more time because many several different versions of the same dependencies will be installed.

Node Version Manager (NVM) npm installing modules to common folder

I've installed NVM for node.js using the instructions from this post:
http://www.backdrifter.com/2011/02/18/using-nvm-and-npm-to-manage-node-js/
When I switch between node versions and then use npm to install a module, all the modules are placed in the same 'node_modules' folder (~/node_modules/) instead of in the 'node_modules' directory specific to that version of node?
Any idea on how to remedy this?
Based on the comments from https://github.com/creationix/nvm/pull/97:
When installing packages with npm using the global switch -g the
package ends up in the proper directory (i.e.
.nvm/$VERSION/lib/node_modules), however node is unable to require it
since it somehow isn't searching on it's prefix.
So using npm install -g xxxxx will put the modules in the correct location for NVM but if you try to require one of them node can't find the module. I am still playing around with this and will update if I find a solution.
Update
Where does NPM put node_modules? (see https://docs.npmjs.com/files/folders)
Local install (default): puts stuff in ./node_modules of the current package root.
Global install (with -g): puts stuff in /usr/local or wherever node is installed.
Install it locally if you're going to require() it.
Install it globally if you're going to run it on the command line.
If you need both, then install it in both places, or use npm link.
So what I did was run npm init (see http://npmjs.org/doc/init.html) in my projects root dir which generated package.json. Now when I run npm install xxxxx it creates a node_modules dir in my project folder (which I add to my .gitignore). This works for modules that I require in my code.
For commands such as CoffeeScript I install with npm install -g coffee-script which puts it in the correct directory (.nvm/$VERSION/lib/node_modules). While I can't require these modules (npm link should solve this problem) I can run the commands - i.e. coffee.
I just installed express globally (-g) and was having problem when require("express"). Just like Jesse Vogt said I just reinstalled express but this time without the -g just like this: "sudo npm install express" and now is working perfectly!
For latest nvm window version 1.1.7.
Package was installed and placed into the respective nodejs version.
nvm use 16.8.0
npm install truffle
nvm use 16.7.0
npm install mysql

Resources