如何对所有依赖项进行版本升级?
Posted
技术标签:
【中文标题】如何对所有依赖项进行版本升级?【英文标题】:How can I version bump all my dependencies? 【发布时间】:2017-04-27 11:13:00 【问题描述】:yarn outdated
提供了很多信息,但我想避免一个包一个包运行 yarn upgrade
。
从 yarn 的文档中,据说只有不带参数的 yarn upgrade
会升级所有依赖项,但我的项目的 package.json
和 yarn outdated
没有变化,显示的包版本与以前相同。
是否有一些命令或参数会影响我的所有依赖项?
如果不是,是否以某种方式不鼓励这种做法?
【问题讨论】:
【参考方案1】:您可以使用 yarn upgrade
将您的包更新到 package.json 中指定的最新版本,无需任何参数。
这取自docs:
yarn upgrade
此命令将所有依赖项更新到其最新版本,基于 package.json 文件中指定的版本范围。 yarn.lock 文件也将被重新创建。
这只会更新 package.json 中允许升级的包,例如使用^
(例如^0.13.0
将更新到版本0.14.0
,如果它存在)。这不会更新您的 package.json 文件,但会更新 yarn.lock。
如果您想将依赖项更新到最新版本,您可以使用包 npm-check-updates
,它将更新您的 package.json:
$ yarn global add npm-check-updates
$ npm-check-updates -u
$ yarn upgrade
【讨论】:
对。也许确实如此。但这并没有反映在我的package.json
中,yarn outdated
在完整运行yarn upgrade
之前和之后没有任何区别。我错过了什么?
我意识到yarn upgrade
仅在您使用^
或~
时将包更新到package.json 中的最新版本。如果您的包被指定为固定版本,这不会改变。我已经编辑了我的答案以添加一个选项来更新你的 package.json。
你试过yarn upgrade --latest
命令吗?根据文档,据我了解,它也会更新 package.json。【参考方案2】:
如果您的依赖项使用范围版本("^x.x.x"
、"~x.x.x"
等),如果最新版本也匹配该范围,则不会更新您的 package.json
,只会更新您的 yarn.lock
。
如果您希望更新您的package.json
:
-
将所有依赖项更改为固定版本 (
"x.x.x"
)
运行yarn
以更新yarn.lock
运行yarn upgrade-interactive
并选择要升级的所有依赖项
现在您的yarn.lock
和package.json
都将反映确切的最新版本。
【讨论】:
【参考方案3】:只需运行 yarn upgrade-interactive --latest
并使用空格按钮选择要更新的包,然后按 Enter 即可更新。
【讨论】:
注意:在使用upgrade-interactive
之前,您需要为yarn
导入interactive-tools
插件,方法是运行以下命令:yarn plugin import interactive-tools
。【参考方案4】:
将所有软件包升级到最新版本
yarn upgrade --latest
【讨论】:
【参考方案5】:yarn v2 用户的回答。
如果您还没有,请导入 interactive-tools
插件:
$ yarn plugin import interactive-tools
然后运行它:
$ yarn upgrade-interactive
注意:这也会修改package.json
中的 semvers。
【讨论】:
【参考方案6】:我总是遵循官方文档:)
yarn add --dev yarn-upgrade-all
源代码:https://yarnpkg.com/package/yarn-upgrade-all
【讨论】:
这不是官方文档,这是第三方包 啊,好的,谢谢。你能帮我找到官方网站/文档吗? 不是官方文档(内置功能),但这对我有用...yarn add --dev yarn-upgrade-all
然后在 package.json 根文件中我添加了 "up": "yarn-upgrade-all"
下"scripts"
,现在在项目根目录下执行yarn up
以上是关于如何对所有依赖项进行版本升级?的主要内容,如果未能解决你的问题,请参考以下文章
通过阅读 package.json 升级 React 版本及其依赖项