使用 package-lock.json 更新中间 npm 依赖项

Posted

技术标签:

【中文标题】使用 package-lock.json 更新中间 npm 依赖项【英文标题】:Update intermediary npm dependencies with package-lock.json 【发布时间】:2018-04-19 02:09:51 【问题描述】:

在存在package-lock.json file 的情况下,使用 npm 更新中间依赖项的正确方法是什么?

例如:

$ npm outdated --depth=1 eslint
Package  Current  Wanted  Latest  Location
eslint     4.9.0  4.10.0  4.10.0  MyApplication1 > grunt-eslint

package-lock.json 通过将 eslint(中间依赖项,在本例中为 grunt-eslint)保持在 4.9.0 来完成其工作。如何更新到 eslint@4.10?

我尝试了以下命令,但 npm 没有做任何事情:

npm update grunt-eslint --dev --depth 1
npm update eslint --dev

如果我将 eslint 添加为***依赖项,它会起作用,但我认为这不是正确的方法。

【问题讨论】:

npm install --save-dev eslint 怎么样?而不是update? @zero298 可行,但它会导致依赖项被保存为***依赖项,并且对于不同深度的中间依赖项执行此操作也不可行 你试过npm install eslint@4.10.0 --dev --depth 1 【参考方案1】:

这显然是一个 hacky 解决方法,但它可以达到目的:

npm install eslint --save-dev && npm uninstall eslint --save-dev

如果有更好的方法,我很乐意接受另一个答案。

【讨论】:

以上是关于使用 package-lock.json 更新中间 npm 依赖项的主要内容,如果未能解决你的问题,请参考以下文章

在 package.json 和 package-lock.json 中更新版本号而不更新依赖

package.json与package-lock.json的区别

如何在没有任何副作用的情况下更新 package-lock.json 中的单个依赖项?

package.json 与 package-lock.json 的区别

NPM5,package-lock.json 和 package.json 有啥区别?

package.json 与 package-lock.json 的区别