Yarn:将 JavaScript 依赖项重新部署到生产服务器的过程(使用 `yarn.lock` 文件)

Yarn: Procedure for redeploying JavaScript dependencies to Production Server (usage of `yarn.lock` file)

我已阅读有关 Yarn 的文档,我知道 lock 文件应该提交给 VC。请参阅 this and which explains at a high-level why the lock file is necessary, and this,其中列出了一堆命令,但没有太多解释它们的实际作用!

我还在 Whosebug 上阅读了很多关于 lock 文件是否应该提交给 VC.

的问题

但是,所有文档和 SO 线程似乎都忽略了我想知道的细节,如下所示;什么是正确的程序(运行 的正确命令串):

  1. 在需要时更新 yarn.lock 文件(即在开发环境中我想提取最新的次要版本并更新 lock 文件以反映这一点)
  2. 为了让我的锁定文件与其他开发人员保持同步,以确保他们 developing/testing 来自完全相同的依赖版本,并且
  3. 对于 updating/re-synching 生产服务器上的 node_modules 目录(即确保生产服务器不 运行ning 在 different/breaking 版本的依赖包上)

我问的部分原因是过去在服务器上执行 git pull 时,我遇到消息告诉我 yarn.lock 文件已独立于 development/VC 更新过程。就我而言,绝不允许发生这种情况。

以下信息基于我们在 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

2) 开发者之间的依赖关系

我建议你做的是创建一个脚本来检查当前的 'recomended' 版本:

yarn check

验证当前项目 package.json 中的包依赖版本是否与 yarn 的锁定文件中的相匹配。

来源:https://yarnpkg.com/en/docs/cli/check

3) 更新服务器生产

与 2 ) 相同,使用 git 挂钩脚本,如果 package.json 版本正确,如果不启动 yarn update,应该可以帮助您 yarn check。 =21=]

  1. 老实说,这是opinion/preference的事情。我看到了一些策略:

    • 使用yarn upgrade
    • 在 运行 yarn
    • 之前手动提升 package.json 中的版本
  2. 就像 Fabien 提到的那样:使用 yarn check

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

    此外,使用 yarn --offline 有很多好处:

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