ChatGPT解决这个技术问题 Extra ChatGPT

如何在 Node.js 中卸载 npm 模块?

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

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

我们是否有任何命令或流程可以从根目录卸载模块(例如 npm uninstall )或者只是删除模块文件?

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

如果要删除所有 npm 模块,请转到此处:stackoverflow.com/questions/9283472/…

T
Turbcool

该命令只是 npm uninstall <name>

Node.js 文档 https://npmjs.org/doc/ 包含您需要通过 npm 了解的所有命令。

本地安装将在您的应用程序的 node_modules/ 目录中。如果一个模块没有引用它,这不会影响应用程序。

但是,如果您要删除全局包,则引用它的任何应用程序都会崩溃。

以下是不同的选项:

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

npm uninstall <name> --save 还将它从 dependenciesin package.json 中删除

npm uninstall <name> --save-dev 还将它从 package.json 中的 devDependencies 中删除

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


试试这个 npm -g ls | grep -v 'npm@' | awk '/@/ {print $2}' | awk -F@ '{print $1}' | xargs npm -g rm 来卸载所有全球安装的模块。如果你在 Windows 上,那么你需要安装 Cygwin 或 git 来运行它
卸载所有全局模块:stackoverflow.com/questions/5926672/… 并删除 node_modules 文件夹 卸载所有本地模块删除本地 node_modules 文件夹
npm uninstall <name> now removes the module from both package.json` 和 node_modules
截至 2019 年,节点 13(我相信 10+ 也是)通过 npm uninstall <name> 从 package.json 中删除包
正如评论和答案所提到的,--save 标志不再有用,因为它是没有标志的默认行为;如果您想要旧的默认行为(保持 package.json 不变),请使用 --no-save 标志。 docs.npmjs.com/cli/install
f
fuma

如果它不适用于 npm uninstall <module_name>,请通过键入 -g 全局尝试。

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


如果有 npm WARN uninstall-g 会很有帮助。
P
Peter Mortensen

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

在不更改 package.json 的情况下删除 module1:npm uninstall module1 通过更改 package.json 删除 module1,并将其从 package.json 中的依赖项中删除:npm uninstall --save module1

注意:为简化上述命令,您可以使用 -S 代替 --save ,并且可以使用 remove、rm、r、un、unlink 代替卸载


为了完整起见,应该小心他/她是否要删除 GLOBAL 或 LOCAL 依赖项。对于全局使用 -g 与上述!另外:对于卸载所有全局模块:stackoverflow.com/questions/5926672/… 并删除 node_modules 文件夹对于卸载所有本地模块,请删除本地 node_modules 文件夹
r
rink.attendant.6

我只是默认将 stylus 安装在我的主目录下,所以我只是使用 npm uninstall stylus 将其分离,或者您可以尝试 npm rm <package_name>


P
Peter Mortensen

卸载 Node.js 模块:

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

这将全局删除依赖项。


P
Peter Mortensen

要批量删除文件夹 node_modules 中的包,您还可以将它们从文件 package.json 中删除,保存,然后在终端中运行 npm prune

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

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


P
Peter Mortensen

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

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

在 Mac 上,转到文件夹 /usr/local/lib/node_modules 并删除包含所需软件包的文件夹。而已。使用以下命令检查您的全局安装包列表:

npm list -g --depth=0

只是好奇,为什么“npm uninstall -g packageName”在某些情况下不起作用?
因为它是巨大的错误代码......很难适应每个操作系统版本。我认为这就是原因
M
Mwiza

您还可以以简写形式运行以下命令:

npm un packageNamenpm rm packageName

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


P
Peter Mortensen

npm 5 的更新:

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

npm uninstall <package>

例如:

npm uninstall mongodb

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


真的;如果您想要旧的默认行为(保持 package.json 不变),请使用 --no-save 标志 docs.npmjs.com/cli/install
P
Peter Mortensen

我发现这一点很难,即使它看起来很明显。

我最初尝试使用脚本中的简单 for 循环来循环运行 npm uninstall module-namenode_modules 目录。我发现如果您调用完整路径,它将不起作用,例如,

npm uninstall module-name

正在工作,但是

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

没有工作。


P
Peter Mortensen

对于 Windows 用户 - 如果您想删除一次安装的所有 Node.js 模块:

打开 PowerShell 窗口

进入 node_modules 文件夹(cd node_modules)

运行此命令 - “npm uninstall (Get-ChildItem).Name”

它将卸载所有模块。


k
khizer

别名可用于卸载 node_modules 包

uninstallun 别名

删除单个包

 - npm un <PACKAGE_NAME> 

通过在包名称之间添加空格来删除多个包

- npm un <PACKAGE_NAME_1> <PACKAGE_NAME_2> 

删除所有 node_modules 包

 - rm -rf node_modules/

H
Harshit Agarwal

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

npm uninstall moduleName

此外,如果您想卸载并希望更改反映在您的 package.json 中,那么您可以使用 --save 标志,如下所示:

npm uninstall moduleName --save
OR
npm uninstall -S

如果你想从 devDependencies 中卸载一个模块,并希望更改反映在 package.json 中,那么你可以使用 -D 标志,如下所示:

npm uninstall moduleName -D

P
Peter Mortensen

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

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

npm install  @ngtools/webpack@latest

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

npm uninstall  @ngtools/webpack@latest

所以上面的卸载没有用。我必须删除 @latest,然后它运行良好:

npm uninstall  @ngtools/webpack

P
Peter Mortensen

npm v6+ 中,npm uninstall <package_name> 将其从文件夹 node_modules 和文件 package.json 中删除。


S
Samuel Reyes

如果要使用 npm 卸载特定包,可以使用以下命令:

辛税:

npm uninstall <package-name>

例子:

npm uninstall moment

如果您可以将 package.json 文件中的配置保留在 dependencies 属性中,则需要使用以下命令: npm uninstall webpack --no-save
S
SherylHohman

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

相当于:
npm uninstall <package-name> --save

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


P
Peter Mortensen
# 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

P
Peter Mortensen

最简单的解决方案是:

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

P
Peter Mortensen

如果要卸载多个模块,只需运行 npm uninstall

然后转到文件 package.json 并从那里删除不需要的模块,然后运行命令 npm install。它应该可以解决您的问题。


P
Peter Mortensen

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

npm -g uninstall <package name>

P
Peter Mortensen

您可以手动删除 Node.js 模块。对于 Windows,

转到存储库的 node_modules 目录。删除不需要的 Node.js 模块。不要忘记删除 package.json 文件中对模块的引用!您的项目可能仍会使用该引用运行,但您可能会收到错误消息。您也不想在您的 package.json 文件中留下未使用的引用,这可能会在以后引起混淆。