如何在Node JS中卸载NPM模块?


1128

正如公知的,任何NPM模块可以通过运行一个简单的命令被安装:npm install <module_name>

我已经安装了一些不再使用的模块,我只想把它们取下来。我对此有一些疑问:

  • 我们是否有任何命令或过程可以从根目录卸载模块(如npm uninstall <module_name>),还是仅删除模块文件即可?

  • 如果我们保留未使用的模块,它将对我们有何影响?


2
如果你想删除所有NPM模块,去这里: stackoverflow.com/questions/9283472/...
丹尼尔

Answers:


1726

该命令很简单 npm uninstall <name>

Node.js文档https://npmjs.org/doc/具有npm需要了解的所有命令。

本地安装将在node_modules/您的应用程序目录中。如果模块保留在那里而没有引用,则这不会影响应用程序。

但是,如果要删除全局软件包,则引用该全局软件包的所有应用程序都将崩溃。

这是不同的选项:

npm uninstall <name>从中删除模块node_modules但不更新package.json

npm uninstall <name> --save也删除它dependenciespackage.json

npm uninstall <name> --save-dev也删除它devDependenciespackage.json

npm uninstall -g <name> --save 也将其全局删除


19
尝试执行此操作npm -g ls | grep -v 'npm@' | awk '/@/ {print $2}' | awk -F@ '{print $1}' | xargs npm -g rm以卸载所有通过gobally安装的模块。如果您使用的是Windows,则需要安装Cygwin或git才能运行它
Nur Rony 2013年

198
一些提示:npm uninstall <name>从node_modules中删除模块,但不从package.json中删除。难道npm uninstall <name> --save还删除的package.json的依赖。不要npm -g uninstall <name> --save删除全局的依赖。
Raine Revere 2014年

1
要卸载所有全局模块: stackoverflow.com/questions/5926672/… 并删除node_modules文件夹要卸载所有本地模块,请删除本地node_modules文件夹
DanteTheSmith

1
我尝试使用上面列出的所有命令删除cypress@3.1.4,并且仍然存在
Steve Staple

20
npm uninstall <name> now removes the module from both package.json`和node_modules
philip oghenerobo balogun

86

如果无法使用npm uninstall <module_name>,请输入进行全局尝试-g

也许您只需要以超级用户/管理员的身份进行操作即可sudo npm uninstall <module_name>


4
-g如果有一个帮助npm WARN uninstall
Lorem Ipsum Dolor,2015年

49

为了完全回答这个问题,有两种方法:(例如,我们将已安装的模块称为module1)。

  1. 要不更改package.json 删除module1 :

    npm uninstall module1

  2. 通过更改package.json 来删除module1 ,并将其从package.json中的依赖项中删除:

    npm uninstall --save module1

注意:为了简化上述命令,可以使用-S代替--save,并且可以使用removermrununlink而不是uninstall


为了完整起见,要删除全局或本地依赖项时应格外小心。对于全局变量,请在上面使用-g!另外:要卸载所有全局模块: stackoverflow.com/questions/5926672/… 并删除node_modules文件夹要卸载所有本地模块,请删除本地node_modules文件夹
DanteTheSmith

28

默认情况下,我只是在主目录下安装手写笔,所以我只是npm uninstall stylus用来分离它,或者您可以尝试npm rm <package_name>一下。


17

要卸载节点模块:

npm uninstall <module_name>  

这将从node_modules中删除该模块,但不会从package.json中删除该模块。因此,当我们再次执行npm install时,它将下载该模块。

因此,要从package.json中删除模块,请使用:

npm uninstall <module_name> --save  

这也会从package.json中删除依赖项。

如果要卸载任何全局模块,则可以使用:

npm -g uninstall <module_name> --save 

这将全局删除依赖项。


@WernerHenze当我给出答案2016时,缺少一些全局卸载模块!
Vishnu Mishra

7

node_modules/批量删除软件包,也可以从中删除它们package.json,进行保存,然后npm prune在终端上运行。

这将删除文件系统中存在但未使用/未声明的那些软件包package.json

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


6

即使看起来很明显,我也很难做到这一点。

我最初尝试通过npm uninstall module-name脚本中的简单for循环遍历运行的node_modules目录。我发现如果您调用完整路径,它将无法正常工作,例如

npm uninstall module-name

在工作,但是

npm uninstall /full/path/to/node_modules/module-name 

没有工作。


5

您还可以将以下内容用作速记:

npm un packageName 要么 npm rm packageName

注意:-g在命令末尾添加以卸载全局软件包。


4

有时npm uninstall -g packageName不起作用。

在这种情况下,您可以手动删除软件包。

在Mac上,转到文件夹/usr/local/lib/node_modules并删除包含所需软件包的文件夹。而已。使用此命令检查您全局安装的软件包列表npm list -g --depth=0


只是好奇,为什么在某些情况下“ npm uninstall -g packageName”不起作用?
Mwiza

因为这是巨大的错误代码,所以很难适应每个OS版本。我认为这就是原因
-Nastro

3

对于Windows用户-如果要一次删除所有安装的节点模块:

  • 打开Powershell
  • 进入node_modules文件夹(cd node_modules)
  • 运行此命令-“ npm卸载(Get-ChildItem).Name”

它将卸载所有模块。


3

更新npm 5:

npm 5.0.0开始,默认情况下已添加/删除了已安装/未安装的模块作为依赖项,因此不再需要--save选项。

npm uninstall <package>

例如:

npm uninstall mongodb

它将从node_modules文件夹和package.json文件中删除该模块


1
真正; 如果您想要旧的默认行为(不更改package.json),请使用--no-save标志docs.npmjs.com/cli/install
Marcus

2

uninstall当我尝试使用与安装时使用的命令相同的命令时,该选项对我不起作用(因为我正在使用@latest指令进行安装)

因此,例如,我安装了这样的软件包:

npm install  @ngtools/webpack@latest

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

npm uninstall  @ngtools/webpack@latest

所以上述卸载没有用,我必须删除@latest&然后运行良好

npm uninstall  @ngtools/webpack

我希望这有帮助


1
# login 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

1

最简单的解决方案是:

npm uninstall packageName --save-dev

查看项目中的上层软件包名称:

npm list --depth=0

输出将如下所示:

app@0.1.0 /home/jackkobec/projects/myAppName
├── packageName@packageVersion
├── express@4.16.4

复制软件包名称并执行npm uninstall命令。快递包裹示例:

npm uninstall express --save-dev

1

要使用npm卸载模块,可以使用:

npm uninstall moduleName

另外,如果您想卸载并将更改反映在package.json中,则可以使用--save标志,如下所示:

npm uninstall moduleName --save
OR
npm uninstall -S

而且,如果您想从devDependencies卸载模块并希望更改反映在package.json中,则可以使用-D标志,如下所示:

npm uninstall moduleName -D

1

要卸载节点模块:

npm uninstall <module_name>  

这将从node_modules中删除该模块,但不会从package.json中删除该模块。

通过使用以下命令,从package.json使用中删除模块:

npm uninstall <module_name> --save 

这也会从package.json中删除。


0

此外,如果您已开始使用yarn,请代替npm
yarn remove <package-name>

等效于:
npm uninstall <package-name> --save

这将
-从中删除软件包package.json,以及
-从项目node-modules文件夹 中将其卸载


0

采用

npm uninstall <package_name>

卸载Express的示例

npm uninstall express


-2

如果要卸载多个模块,只需运行npm uninstall。然后转到package.json并从那里删除不需要的模块,然后运行命令npm install。它应该可以解决您的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.