Yarn: 如何使用 `yarn.lock` 文件重新部署 JavaScript 依赖到生产服务器

17

我已经阅读了关于Yarn的文档,我知道应该将lock文件提交到VC。请参见这篇文章,它从高层次上解释了锁定文件的必要性,以及这篇文章列出了一堆命令,却没有详细解释它们究竟是做什么的!

我也阅读了很多关于是否应该将lock文件提交到VC的StackOverflow问题。

然而,所有的文档和SO主题似乎都忽略了我想知道的细节,即以下内容的正确程序(要运行的正确一堆命令):

  1. 在需要时更新yarn.lock文件(即在开发环境中,当我想拉取最新的次要版本并更新lock文件以反映此更改时)
  2. 为了使我的锁定文件与其他开发人员保持同步,以确保他们使用完全相同的依赖项版本进行开发/测试,并
  3. 在生产服务器上更新/重新同步node_modules目录(即确保生产服务器不会运行在依赖包的不同/破坏性版本上)

我提出这个问题,部分原因是在以前在服务器上执行git pull时,我曾经面对过一些消息,告诉我yarn.lock文件已经独立于开发/VC过程进行了更新。就我所知,这种情况永远都不应该被允许发生。


在添加包时,在 package.json 文件中指定包时,最好指定要安装的“确切版本” 。这是帮助您在系统之间维护正确包的机制。例如:yarn add my-package@1.0.1 并且在安装新版本的包时更加勤奋,以确保与其他包的兼容性。 - Sebastian Scholle
2个回答

2
以下信息是基于我们在Orange日常工作中所使用的,可能并非唯一的真相。
1) 更新yarn.lock文件。
yarn upgrade [package | package@tag | package@version | @scope/]... [--ignore-engines] [--pattern]

这个命令会根据package.json文件中指定的版本范围将依赖项更新为最新版本。同时,yarn.lock文件也会被重新创建。
来源:https://yarnpkg.com/en/docs/cli/upgrade 我建议您创建一个脚本,使用以下命令检查当前推荐的版本: yarn check 该命令验证当前项目package.json中的依赖包版本是否与yarn锁定文件中的版本匹配。
来源:https://yarnpkg.com/en/docs/cli/check 对于在服务器上更新生产环境,与第二步相同,使用Git钩子脚本可以帮助您检查package.json版本是否正确,如果不正确则运行yarn update

1

问题

实际上,这是一个观点/偏好的问题。我见过一些策略:

  • 使用 yarn upgrade
  • 在运行 yarn 之前手动提高版本号package.json

像Fabien提到的那样:使用 yarn check

您可以使用yarn离线镜像,在其中将您的npm包缓存提交到版本控制中。(参见this中的中等文章)

此外,使用yarn --offline有很多优点:

  • 构建速度更快,因为您不必从npm注册表中获取包。
  • 如果您没有正确的依赖关系,构建将失败。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接