如何在NPM中更新devDependencies?

208

npm update似乎只更新dependencies中的包,那么devDependencies呢。

目前您可以通过运行npm install .安装devDependencies,但这对于npm update .不起作用。

有什么想法吗?


1
我也遇到了同样的问题。我对npm installnpm update之间的这种不对称感到惊讶。我通过删除我的node_modules目录,然后再次运行npm install来解决它,但似乎应该有更好的方法。 - Joe White
7
我为这个问题提交了一个错误报告,我们会看看会发生什么。 - Joe White
这可能是因为NPM开发人员认为人们会使用npm link来进行开发环境。 - Julian Knight
这个回答解决了你的问题吗?如何将package.json中的每个依赖项更新到最新版本? - Henke
10个回答

186

要更新 package.json 以及本地模块,请运行

npm update --save-dev

可以选择相同的命令来节省时间。

npm update -D

您可以通过以下方式查看更新的完整细节,或查看任何命令:

npm help <cmd>

32
对我来说,npm update -D没有起作用,它没有更新任何东西。 - AmazingDreams
45
为什么这被标记为正确答案,而问题不是如何保存更新到 package.json,而是如何使 npm update 更新 devDependencies? 为什么这个回答被标记为正确答案,而问题并不是如何保存更新到 package.json,而是如何让 npm update 更新 devDependencies? - Alejandro García Iglesias
@onalbi:它没有。这是跟踪问题的线程 - Dan Dascalescu
3
对我来说,npm update --save-dev 运行良好。使用的是 node v12.11.0 和 npm v6.11.3 - Maxime Dupré
1
什么都不起作用!(踩) - JAN

66

安装npm-check-updates (https://www.npmjs.org/package/npm-check-updates),然后进入您的项目文件夹并运行:

在项目文件夹中运行此命令:

ncu -u
npm-check-updates

要更新并保存更改到您的 package.json 文件:

npm-check-updates -u

使用 ncu 代替 npm-check-updates 可以更省打字。 - Edric
@DimitriKopriwa 只针对 devDependencies,有一个 -d 选项。 - Michael Thompson
2
ncu --dep dev -u; npm install - Kiruahxh
这可能会将Vue的依赖更新到比vue-cli支持的最新版本更高的版本。 - Alex Wade

18

以下步骤是我使用的:

  1. npm install -g npm-check-updates
  2. ncu -u
  3. npm update
  4. npm install

2
为什么我们要使用第三方工具来完成这种工作?太奇怪了。我无法使npm更新更改package.json。 - srknzl
1
  1. 可能不需要,可以跳过它。
- Diego Ferri
1
第四步被第三步省略了。@Daniel Danielecki的回复更好地解释了每个步骤实际上是做什么的。https://dev59.com/92kw5IYBdhLWcg3wMHqm#68375286 - JamesWilson

11
  1. npm outdated - 查看哪些内容已过时
  2. npm install -g npm-check-updates - 正如 Michael 所指出的那样
  3. ncu -u - 它会自动更新 package.json 中依赖项(包括 dependencies,这与 devDependencies 不同)的所有版本,仅更改 package.json 中的“数字”,而不重新安装它们。
  4. npm update - 实际的依赖项安装
  5. (可选,根据情况) 你可能需要使用标志 --force 或(在 NPM v7 中)--legacy-peer-deps 来完成该过程。你可以在这里了解这两者之间的差异。
  6. (可选) 你可以使用 ncu -u 进行验证,并且对于正确更新的依赖项,你应该看到文本 All dependencies match the latest package versions :)

这对我来说完美无缺。 - GOK

5

这个问题在当前版本的NPM(1.3.11)中已经不存在。

更新可以使用以下命令: npm update


3
很不幸,它并没有起作用。这是跟踪此问题的讨论串 - Dan Dascalescu

4

如果您使用的是过时的npm版本,则可能会出现问题。因此,在执行任何其他命令之前,请执行以下操作:

sudo npm install npm -g

或者(如果上述方法不起作用):
sudo npm update npm -g

然后重新启动控制台(以便更改生效)。 现在,您可以检查新的npm --version,如果它是最新的,则执行:

npm update

或者(如果您更喜欢):
npm update --save-dev

不幸的是,在npm 5中这并不起作用。这里是跟踪问题的线程。 - Dan Dascalescu

2
我的做法是像这样安装单独的开发依赖项。
npm install react-test-renderer@15.6.1 --save --only=dev

npm install package-name@version --save-dev -> only="dev" 不正确。 - reydelo

2
我遇到了与OP相同的问题,但没有找到解决方案,所以我决定编写一个Grunt插件,来自动更新我的devDependencies。
它在Github上,我很乐意得到一些意见和合作,以使它成为NPM没有提供的最好的工具。
基本上,它将使用简单的Grunt任务自动更新您过时的开发依赖项。 https://github.com/pgilad/grunt-dev-update

2
我在https://nodejs.dev/learn/update-all-the-nodejs-dependencies-to-their-latest-version上找到了答案,这对于我来说适用于所有主要版本。
npm install -g npm-check-updates
ncu -u
npm update

要检查过时的软件包,请使用以下命令

npm outdated

1

一种(缓慢)强制更新的方法是删除 node_modules 目录,然后再次执行 npm install 命令。

这是 npm update 命令已知的一个 bug,在 npm 的开发分支中已经修复,详情请参见此处: https://github.com/isaacs/npm/pull/3863

它应该很快会出现在最新稳定版本的 npm 中。


1
如果使用的是 npm > v5,您还需要删除 package-lock.json 才能使其生效,否则它将只安装在该锁定文件中列出的版本。 - karfau
此外,这不会为您更新 package.json。这是跟踪该问题的线程 - Dan Dascalescu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接