当yarn在package.json依赖项中遇到
^
(插入符号)时,它如何工作?
假设我有反应:
^16.0.0
,当我安装纱线时,它将在该版本上创建一个锁(16.0.0
)。
现在稍后,当react
16.1.0
发布时,我使用锁定文件再次安装yarn,yarn会将其升级到该版本还是遵循锁定文件中的内容,即16.0.0
?
谢谢。
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 文件,您需要阅读此答案以了解纱线的行为方式。
所选答案错误。
插入符号表示以下
^3.1.4 将允许版本范围 >=3.1.4 <4.0.0