【问题标题】:Yarn 2.0 zero installs production vs development deployment?Yarn 2.0 零安装生产与开发部署?
【发布时间】:2022-02-12 08:20:27
【问题描述】:

所以我们正在从 yarn 1.x 迁移到 yarn 2(yarn 3.1.1),我对如何在我的 CI/CD 配置中配置 yarn 有点困惑。截至目前,我们的管道执行以下操作以部署到我们的 Kubernetes 集群:

在分支 PR:

  1. 在 gitlab runner 中获取分支 repo

  2. 皮棉

  3. 开个玩笑

  4. 使用环境变量、依赖项和开发依赖项构建

  5. 使用标签test将镜像发布到容器注册表

    一个。如果成功,允许合并到主目录

  6. Kubernetes 监视更新以进行测试并将测试 pod 部署到集群

合并到主目录时:

  1. 在 gitlab runner 中获取主仓库
  2. 皮棉
  3. 开个玩笑
  4. 使用环境变量和依赖项构建
  5. 使用标签latest将镜像发布到容器注册表
  6. Kubernetes 监视最新的更新并将临时 pod 部署到集群

(注意:对于成熟的生产版本,我们将使用发布功能手动将发布部署到生产服务器)

问题是我们使用零安装的纱线 2,过去我们可以通过运行 yarn install --production 来阻止生产环境使用任何开发依赖项。在纱线 2 中,此命令已被弃用。

是否有任何理想的解决方案可以防止在生产环境中安装开发依赖项?我已经看到一些帖子提到使用工作区,但这似乎更适合有多个应用程序的单一存储库。

提前感谢您的帮助!

【问题讨论】:

  • 您使用的是哪个版本的 Kubernetes,您是如何设置集群的?您是否使用裸机安装或某些云提供商?您的问题与 Kubernetes 有什么关系?
  • @MikołajGłodziak 问题不在于 Kubernetes,而更多地在于纱线。我们的 Kubernetes 集群使用 helm 图表,并与 Azure 一起部署在云中。我想要做的是生成 Web 应用程序的生产版本以部署到 Kubernetes,而使用 yarn 2.0 似乎不可能。 (虽然我觉得这很难相信)

标签: docker kubernetes next.js yarnpkg cicd


【解决方案1】:

我有同样的问题,得出了和你一样的结论。我找不到在纱线 2 上执行生产构建的简单方法。纱线工作区最接近,但我确实在文档中找到了以下段落:

请注意,此命令仅在使用零安装时非常有用,因为缓存无论如何都会包含所有包 - 这意味着完整安装和集中安装之间的唯一区别只是在.pnp.cjs 文件,代价是引入了额外的复杂性。

发件人:https://yarnpkg.com/cli/workspaces/focus#options-production

这是否意味着基本上没有生产安装?如果能在某个地方正式解决这个问题就好了,但这是我能找到的最接近的。

就我个人而言,我正在使用 NextJS 并将我的项目升级到 Yarn 2。Yarn 2 的功能似乎可以工作(没有 node_modules 文件夹),但我仍然可以使用 NextJS 中的 yarn build 创建一个在 @ 中输出的生产版本987654323@文件夹。

【讨论】:

  • 是的,听起来我们在同一条船上。我们最终决定,在生产过程中为我们的用例提供额外的软件包的影响可以忽略不计。就像你说的那样,.next 文件夹将提供给客户端,因此开发依赖项仍然存在,但永远不会被使用。
猜你喜欢
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
  • 2011-10-16
  • 2020-10-06
  • 2014-03-23
  • 2016-11-10
相关资源
最近更新 更多