众所周知,任何npm模块都可以通过运行一个简单的命令安装:npm install <module_name>。

我已经安装了一些我不再使用的模块,我只是想把它们弄掉。我对此有几个问题:

我们是否有任何命令或过程来从根目录卸载一个模块(比如npm uninstall <module_name>) 或者仅仅删除模块文件就可以了? 如果我们保留未使用的模块会对我们有什么影响?


当前回答

要批量删除node_modules文件夹中的包,也可以从文件package中删除它们。Json,保存它,然后在终端运行NPM prune。

这将删除那些存在于文件系统中,但在package.json文件中没有使用/声明的包。

附注:这在Windows上特别有用,因为您可能经常遇到由于“超过路径长度限制”而无法删除某些文件的问题。

其他回答

# 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

卸载选项没有为我工作时,我试图使用相同的命令,我在安装(因为我正在安装@latest指令)

举个例子,我安装了一个这样的包:

npm install  @ngtools/webpack@latest

然后我想卸载它,所以我使用了相同的命令(包括@latest):

npm uninstall  @ngtools/webpack@latest

所以上面的卸载没有工作。我必须删除@latest,然后它工作得很好:

npm uninstall  @ngtools/webpack

好吧,要完整地回答这个问题,有两个方法(例如,我们将已安装的模块称为module1):

在不改变package.json的情况下删除module1: NPM卸载模块1 使用更改包删除module1。并将其从package.json中的依赖项中移除: NPM卸载——保存模块1

注意:为了简化上面提到的命令,你可以用-S代替——save,可以用remove, rm, r, un, unlink代替uninstall

此外,如果你已经开始使用yarn,在npm的位置: Yarn remove <package-name>

等价于: NPM卸载<package-name>——保存

这将 -从包中移除包。Json,以及 -从项目的node-modules文件夹中卸载它

如果你是在Windows上,以管理员身份运行CMD并键入:

npm -g uninstall <package name>