【问题标题】:php composer install or NOT? for production environmentsphp作曲家安装与否?用于生产环境
【发布时间】:2016-06-17 10:02:53
【问题描述】:

我现在正在开发 Laravel webapp,到目前为止,vendor 目录远离 git(版本控制),每次全新安装时,我都会将 composer install 命令添加到自动化脚本中,一切都很好。

现在就在两天前,我在我的项目中添加了 laravelcollective (https://laravelcollective.com/),以帮助我在刀片模板中使用表单和 html。现在不知何故,其中一个依赖项要求我生成 GIT 私有令牌来安装它,这很痛苦,因为它会损害我的自动化。我仍然可以通过调用 url 并报废 html 来读取令牌和类似的东西来破解它,但我不喜欢它。然后我认为将vendor 目录保留在SVN/GIT 之外是个好主意吗?产品的源代码不是包含其自身的所有依赖项吗?我不是在谈论在安装程序中填充 JRE,而是在涉及使用本地语言的产品库时。

我想了解更多有关行业标准或最佳实践的信息。

附注: 这个问题非常笼统,不仅限于 laravel 甚至 php。

【问题讨论】:

  • “产品的源代码不是包含了所有的依赖关系吗?” - 列出了所有依赖项,使用您的代码的人会知道需要什么,当人们可以通过运行 composer update 获得相同的代码时,无需在版本控制中添加大量额外代码
  • composer 有它的好处,但是当您尝试自动化构建过程并遇到一些需要您生成访问令牌的库/插件时,解决方案是什么?
  • 我从来没有遇到过,你说的是什么库?
  • 没有理由不能生成 Github(不是 Git)令牌并将其放入您的构建自动化脚本/流程中。我们在我的工作中就是这样做的。
  • 请参阅部署密钥 developer.github.com/guides/managing-deploy-keys 和为命令行使用创建访问令牌 help.github.com/articles/… 将满足您的需求 :)

标签: php laravel composer-php


【解决方案1】:

现在不知何故,其中一个依赖项要求我生成 GIT 私有令牌来安装它,这很痛苦,因为它会损害我的自动化。

您只是遇到了 Github 对匿名用户下载包的速率限制。没有理由你不能自动化这个。生成一个 Github 令牌(您只需执行一次 - 他们对经过身份验证的请求获得 非常 高速率限制),然后让您的自动化使用该令牌,如下所示:

composer config -g github-oauth.github.com <oauthtoken>

https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens

【讨论】:

    【解决方案2】:

    嗯,对于生产环境,您通常首先在 CI 软件中运行构建过程。如果在构建过程中“composer install”失败 - 应用程序将不会部署到生产环境,因此您是安全的。

    是的,大多数 (99%+) 人将“供应商”文件夹保留在存储库之外,因为它是第三方代码,不是您的。您甚至可能无权在您的存储库中托管它。

    如果您想确保您的生产版本将按顺序包含所有依赖项,就像您在 CI 期间拥有它们的方式一样,并且始终会发布 - 您可以构建 Docker 映像并将它们发送到生产环境。然后,一切都预先打包好了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-21
      • 2017-03-13
      • 2014-10-22
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多