Assume I install project packages with npm install
that looks into package.json
for modules to be installed. After a while I see that I don't need some specific module and remove its dependency from package.json
. Then I remove some other modules from package.json
because they are not needed anymore and others are replaced with alternatives.
Now I want to clean node_modules
folder so that only modules listed in package.json
stay there and the rest must go, something like npm clean
. I know I can remove them manually but would like to have some nice ready to use sugar functionality for that.
node_modules
, otherwise npm will re-evaluate the package.json and gives you the latest package versions, which with package that does not follow semver properly can become a nightmare
I think you're looking for npm prune
npm prune [
See the docs: https://docs.npmjs.com/cli/prune
You could remove your node_modules/ folder and then reinstall the dependencies from package.json.
rm -rf node_modules/
npm install
This would erase all installed packages in the current folder and only install the dependencies from package.json. If the dependencies have been previously installed npm will try to use the cached version, avoiding downloading the dependency a second time.
rmdir node_modules /s /q
on Windows. superuser.com/a/179661/440976
prune
option does require you to have internet connection at all.
rm -rf node_modules && npm install
is slower but the only actual reliable way. npm update && npm prune
will, e.g., not remove packages referenced by peerDependencies
.
Due to its folder nesting Windows can’t delete the folder as its name is too long. To solve this, install RimRaf:
npm install rimraf -g
rimraf node_modules
rm -rf node_modules
rm -rf node_modules
will not work on windows. See this solution: superuser.com/a/179661/440976
From version 6.5.0 npm
supports the command clean-install
(ci
) to hard refresh all the packages.
Please, see the references:
npm 6.x: npm-ci | npm Docs.
npm 7.x: npm-ci | npm Docs.
npm Blog Archive: Introducing npm ci for faster, more reliable builds.
npm ci
is also great for continuous integration. It runs faster if you don't have a node_modules directory, so on our servers we backup the previous build by renaming node_modules to something else (for example, node_modules_backup. If a backup already exists, delete it first and then rename). We then run npm install
as a hassle-free swift package update solution.
simple just run
rm -r node_modules
in fact, you can delete any folder with this.
like rm -r AnyFolderWhichIsNotDeletableFromShiftDeleteOrDelete.
just open the gitbash move to root of the folder and run this command
Hope this will help.
First globally install rimraf
npm install rimraf -g
go to the path using cmd where your node_modules folder and apply below command
rimraf node_modules
npm prune
is an ideal solution.
Just in-case somebody needs it, here's something I've done recently to resolve this:
npm ci - If you want to clean everything and install all packages from scratch:
-It does a clean install: if the node_modules folder exists, npm deletes it and installs a fresh one.
-It checks for consistency: if package-lock.json doesn’t exist or if it doesn’t match the contents of package.json, npm stops with an error.
https://docs.npmjs.com/cli/v6/commands/npm-ci
npm-dedupe - If you want to clean-up the current node_modules directory without deleting and re-installing all the packages
Searches the local package tree and attempts to simplify the overall structure by moving dependencies further up the tree, where they can be more effectively shared by multiple dependent packages.
https://docs.npmjs.com/cli/v6/commands/npm-dedupe
Have you tried npm prune?
it should uninstall everything not listed in your package file
https://npmjs.org/doc/cli/npm-prune.html
The best article I found about it is this one: https://trilon.io/blog/how-to-delete-all-nodemodules-recursively
All from the console and easy to execute from any folder point.
But as a summary of the article, this command to find the size for each node_module
folder found in different projects.
find . -name "node_modules" -type d -prune -print | xargs du -chs
And to actually remove them:
find . -name 'node_modules' -type d -prune -print -exec rm -rf '{}' \;
The article contains also instructions for windows shell.
I have added few lines inside package.json:
"scripts": {
...
"clean": "rmdir /s /q node_modules",
"reinstall": "npm run clean && npm install",
"rebuild": "npm run clean && npm install && rmdir /s /q dist && npm run build --prod",
...
}
If you want to clean
only you can use this rimraf node_modules
or rm -rf node_modules
.
It works fine
For Windows User, alternative solution to remove such folder listed here: http://ask.osify.com/qa/567
Among them, a free tool: Long Path Fixer is good to try: http://corz.org/windows/software/accessories/Long-Path-Fixer-for-Windows.php
You can also use npx in combination with rimraf to remove all node modules with one command, so you don't have to install rimraf first.
So go to the path where your node_modules folder is located by using cmd (in case you are not there already) and run the following command
npx rimraf node_modules
rimraf is an package for simulate linux command [rm -rf] in windows. which is useful for cross platform support. for install its CLI:
npm install rimraf -g
For all of those who use Yarn, no need to rm -rf node_modules
, you can just remove package from dependency list, and run yarn
Use following command instead of npm install
npm ci
Success story sharing
node_modules
folder, and not as before, where each dependency had it's own dependencies install in their ownnode_modules
folders..with countless copies of the same dependencies... so doesnpm prune
takes this into consideration? because those deep-dependencies aren't written on the mainpackage.json
of your project.. prune must look recursively.npm dedupe
docs.npmjs.com/cli/dedupe . It tries to simplify the node tree by moving dependencies up the tree.