Yarn:将 JavaScript 依赖项重新部署到生产服务器的过程(使用 `yarn.lock` 文件)
Posted
技术标签:
【中文标题】Yarn:将 JavaScript 依赖项重新部署到生产服务器的过程(使用 `yarn.lock` 文件)【英文标题】:Yarn: Procedure for redeploying JavaScript dependencies to Production Server (usage of `yarn.lock` file) 【发布时间】:2019-02-01 20:59:00 【问题描述】:我已阅读有关 Yarn 的文档,并且我知道 lock
文件应该提交给 VC。请参阅this,它从高层次上解释了为什么需要锁定文件,而this 列出了一堆命令,而没有太多解释它们的实际作用!
我还在 *** 上阅读了很多关于 lock
文件是否应该提交给 VC 的问题。
但是,所有文档和 SO 线程似乎都忽略了我想知道的细节,即以下内容;什么是正确的程序(要运行的正确命令):
-
在需要时更新
yarn.lock
文件(即在开发环境中,我想提取最新的次要版本并更新 lock
文件以反映这一点)
用于使我的锁定文件与其他开发人员保持同步,以确保他们从完全相同的依赖版本进行开发/测试,并且
用于更新/重新同步生产服务器上的 node_modules
目录(即确保生产服务器未在依赖包的不同/破坏版本上运行)
我之所以这样问,部分原因是过去在服务器上执行git pull
时,我收到消息告诉我yarn.lock
文件已独立于开发/VC 流程进行更新。就我而言,绝不应该允许这种情况发生。
【问题讨论】:
在添加包时在 package.json 文件中指定包时,最好指定要安装的包的exact version
。这是帮助您跨系统维护正确包的机制。即:yarn add my-package@1.0.1
并且在安装更新版本的包时更加勤奋,以确保与其他包的兼容性。
【参考方案1】:
以下信息基于我们在 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) 开发者之间的依赖
我建议您做的是创建一个脚本,该脚本将在以下人员的帮助下检查当前的“推荐”版本:
yarn check
验证当前项目的package.json
中的包依赖版本是否与yarn的锁文件中的版本匹配。
来源:https://yarnpkg.com/en/docs/cli/check
3) 更新服务器生产
与 2 相同 ) 使用 git hook 脚本,如果 package.json
版本是正确的,如果不启动 yarn update
,应该可以帮助您 yarn check
。
【讨论】:
【参考方案2】:老实说,这是一个意见/偏好问题。我见过一些策略:
使用yarn upgrade
在运行 yarn
之前手动调整 package.json
中的版本
就像 Fabien 提到的:使用 yarn check
您可以使用 yarn 离线镜像,将 npm 包的缓存提交到版本控制中。 (见this中篇)
另外,使用yarn --offline
有很多好处:
【讨论】:
以上是关于Yarn:将 JavaScript 依赖项重新部署到生产服务器的过程(使用 `yarn.lock` 文件)的主要内容,如果未能解决你的问题,请参考以下文章