【问题标题】:How does yarn work when it encounters ^ (caret)?当遇到^(插入符号)时,纱线如何工作?
【发布时间】:2017-11-28 08:34:03
【问题描述】:

yarn 在 package.json 依赖项中遇到 ^(插入符号)时如何工作?

假设我有反应:^16.0.0,当我安装纱线时,它会在那个版本上创建一个锁 (16.0.0)。

现在一段时间后,当 react 16.1.0 发布时,我再次使用锁文件进行纱线安装,纱线是否会将其升级到该版本或遵循锁定文件中的内容 16.0.0

谢谢。

【问题讨论】:

  • 我相信除非有人这样​​做yarn upgrade

标签: javascript yarnpkg


【解决方案1】:

yarn install 将在锁定文件中安装确切的版本。这就是 lockfile 的巨大好处,无论何时安装 yarn,参与您项目的每个人都会获得完全相同版本的包。 (例如,当 16.0.0 是当前版本时,我今天执行 yarn install,但是当 16.1.0 是当前版本时,您明天执行 yarn install。我们仍然会得到 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

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

【讨论】:

  • 您好,您的回答是否适用于“16.0.0”的规范? (也就是说,没有波浪号〜或插入符号〜)。我看到这个关于波浪号和插入符号的描述:所以如果你看到 ~1.0.2 意味着安装版本 1.0.2 或最新的补丁版本,例如 1.0.4。如果您看到 ^1.0.2,则表示安装版本 1.0.2 或最新的次要版本或补丁版本,例如 1.1.0。 (c.f.michaelsoolee.com/npm-package-tilde-caret)
  • @leeyuiwah 仅使用“16.0.0”,您说的是“完全安装 16.0.0 版本”您将不会获得任何更新,您项目中的版本将被锁定为 16.0.0跨度>
【解决方案2】:

选择的答案是错误的。

插入符号表示关注

^3.1.4 will allow a version range from >=3.1.4 <4.0.0

【讨论】:

  • 嘿穴居人,选择的答案怎么错了?您的回答没有回答问题,请考虑发表评论或提供更多信息
  • @dube 问题是纱线如何处理^,而不是锁文件的作用
  • @neaumusic Err 是的,当存在锁文件时纱线会做什么问题,而穴居人忽略了它并解释了插入符号的含义。但提问者可能知道插入符号的含义,因此是问题。
  • @dube 不,问题是how does yarn work when it encounters ^ (caret)?
  • 让我们同意第一个答案可能包含范围,但它没有错,并且包含重要的上下文,这也需要知道 - 尤其是新手。然而,第二个声称第一个是错误的(不是)并且粘贴了一个没有任何内容的范围。我会认为质量低下。最后,我很可能来到这里,因为我想知道它是如何工作的(标题)而不是插入符号的含义。谷歌向我展示了一个不同的问题,即“纱线中的插入符号是什么意思”。如果您认为这是一个问题,可以交叉链接该问题
猜你喜欢
  • 1970-01-01
  • 2019-10-28
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 2020-10-11
相关资源
最近更新 更多