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 do it more times because some modules 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.
I think you're looking for npm prune
npm prune [<name> [<name ...]]
This command removes "extraneous" packages. If a package name is provided, then only packages matching one of the supplied names are removed.
Extraneous packages are packages that are not listed on the parent package's dependencies list.
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.
Have you tried npm prune?
it should uninstall everything not listed in your package file