如何使用npm重新安装应用程序的依赖项?

tru*_*ktr 341 node.js npm

有没有一种简单的方法来重新安装我的应用所依赖的所有软件包(即它们在我的应用程序node_modules文件夹中)?

Vad*_*hev 552

我能看到的最简单方法是删除node_modules文件夹并执行npm install.

  • 同意; 假设您已为应用创建了一个`package.json`文件. (22认同)
  • 请注意,在删除`node_modules`目录后运行`npm install`会导致`package.json`中定义的不同版本的依赖项被拉下来.如果您的应用程序需要非常特定的依赖项版本,请小心并查看`npm shrinkwrap`或检查`node_modules`目录中的源代码控制. (8认同)
  • @smithclay我已经在我的应用程序的package.json中定义了包的显式版本,所以应该没问题,对吧? (8认同)
  • @himanshu,你是对的 `npm install` 将所有模块升级到 package.json 状态。但问题是_如何重新安装所有软件包_。因此,它们可能已损坏,或者可能需要在升级 Node.js 版本后重建二进制部分。 (3认同)

him*_*shu 92

正确的方法是执行npm update.它是一个非常强大的命令,它会更新丢失的软件包,并检查是否可以使用安装的较新版本的软件包.

阅读NPM简介,了解你可以用npm做什么.

  • 但如果没有更新的包装,那么这不会做任何事情,对吧?即使包已经是最新版本,我也试图*强制*重新安装. (53认同)
  • 如果没有丢失的软件包,那么它将检查它是否可以使用package.json中列出的最新版本的软件包(包括软件包的依赖项).所以,实质上它会尽可能升级包.但它不会重新安装.如果你想使用命令来执行它,你可以执行`npm uninstall <package_name>`来卸载特定的包或执行`npm uninstall`来卸载所有包. (2认同)

小智 60

你可以用一个简单的命令来做到这一点:

npm ci
Run Code Online (Sandbox Code Playgroud)

这是文档的摘录npm ci

简而言之,使用npm install和之间的主要区别npm ci是:

  • 该项目必须具有现有的package-lock.jsonnpm-shrinkwrap.json.
  • 如果包锁中的依赖项与 中的不匹配package.jsonnpm ci将退出并显示错误,而不是更新包锁。
  • npm ci 一次只能安装整个项目:无法使用此命令添加单个依赖项。
  • 如果 anode_modules已经存在,它将在npm ci开始安装之前自动删除。
  • 它永远不会写入package.json或任何包锁:安装基本上是冻结的。


0x1*_*ad2 51

大多数时候,我使用以下命令来完成所有节点模块的完全重新安装(确保您在项目文件夹中).

rm -rf node_modules && npm install
Run Code Online (Sandbox Code Playgroud)

您也可以npm cache clean在删除node_modules文件夹后运行,以确保没有任何缓存的依赖项.


Its*_*dan 35

npm更新了安装CLI命令并添加了--force标志

即使磁盘上存在本地副本,-for --force参数也会强制npm获取远程资源.

npm install

  • 我的经验是,这是行不通的。文档说可以,但事实并非如此。 (2认同)

dek*_*den 10

您可以使用npm中的重新安装模块.

安装后,您可以使用以下命令:

reinstall
Run Code Online (Sandbox Code Playgroud)

手动删除node_modules文件夹和制作的唯一区别npm install是该命令自动清除npm的缓存.因此,您可以在一个命令中获得三个步骤.

upd: npx reinstall是一种在没有全局安装包的情况下运行此命令的方法(仅适用于npm5 +)


Sur*_*mar 9

删除node_module并通过命令重新安装

rm -rf node_modules && npm i
Run Code Online (Sandbox Code Playgroud)