当yarn遇到带有锁定文件的^(插入符号)时,它是如何工作的?

问题描述 投票:0回答:2

当yarn在package.json依赖项中遇到

^
(插入符号)时,它如何工作?

假设我有反应:

^16.0.0
,当我安装纱线时,它将在该版本上创建一个锁(
16.0.0
)。

现在稍后,当react

16.1.0
发布时,我使用锁定文件再次安装yarn,yarn会将其升级到该版本还是遵循锁定文件中的内容,即
16.0.0

谢谢。

javascript yarnpkg
2个回答
9
投票

yarn install
将在锁定文件中安装确切的版本。这是锁定文件的巨大好处,无论何时安装 doyarn,参与项目的每个人都会获得完全相同的包版本。 (例如,我今天安装了yarn,当前版本是16.0.0,但是你明天安装了yarn,当前版本是16.1.0。我们仍然会得到16.0.0,因为这是我们的锁文件说我们应该得到的.我们的开发环境是一模一样的,这就是我们想要的。同样,如果我们在 16.2.0 是当前版本的情况下在 2 周内部署,那么 16.0.0 将部署;因此我们的 dev 和 prod 环境也完全相同)

如果 16.1.0 已发布并且您想要更新项目以使用它,请使用

yarn upgrade
。请注意,您可以升级所有软件包,或仅升级一个特定软件包,以及更新到软件包的最新版本或软件包的特定版本。 https://yarnpkg.com/lang/en/docs/cli/upgrade/

版本控制你的package.json和yarn.lock

通过将这两个文件添加到版本控制中,您将能够轻松地将项目恢复到与包相关的特定时间点。

2024 年编辑——阅读问题,并阅读其他答案

OP 的问题是 yarn 如何使用插入符号 锁定文件:

yarn 会将其升级到该版本还是遵循锁定文件 16.0.0 中的内容?

如果您只是想知道插入符号在没有锁定文件的情况下意味着什么,请阅读thecaveman的其他答案(除了他的评论,即这里的答案是错误的......事实并非如此)。但要知道,如果您使用的是 lock 文件,您需要阅读此答案以了解纱线的行为方式。


8
投票

所选答案错误。

插入符号表示以下

^3.1.4 将允许版本范围 >=3.1.4 <4.0.0

© www.soinside.com 2019 - 2024. All rights reserved.