【问题标题】:Different composer.json files for production and staging/development用于生产和登台/开发的不同 composer.json 文件
【发布时间】:2016-04-20 19:44:40
【问题描述】:

场景:

我有一个现有的实时站点,它通过dev-master 上的多个 GIT 存储库加载作曲家依赖项。

一个新的功能请求来自客户端,在我将它从开发合并到主服务器之前,我需要将新的(未完成的)功能部署到暂存环境,以便在推送之前从客户端获得 OK(我可能需要显示客户端新功能的早期版本,还没有准备好掌握)。

我通常通过 capistrano 部署东西(我猜这并没有什么不同)。

我不能将require-dev 用于新代码,因为它可能是需要重构的现有插件。

理想情况下,我可以将dev-develop 用于暂存/开发环境中的插件,将dev-master 用于实时环境,但在同一个composer.json 文件中不可能有两次相同的存储库。

我怎样才能做到这一点?

【问题讨论】:

  • 你可以在不同的 git 分支上有两个不同版本的 composer.json。在开发新功能时,请在名为my-feature 的单独分支中进行,并将其部署到开发环境中进行展示。
  • @Ostrovski 是的,虽然关于那个,但它并没有真正帮助......我需要能够同时部署到生产和登台。我不想在develop合并成master,然后必须手动进入更改composer.json文件。

标签: git composer-php


【解决方案1】:

解决办法是使用环境变量。

我有 2 个 composer.json 文件(还有 2 个 composer.lock 文件)。第二个我命名为composer-dev.json(这将随后生成一个名为composer-dev.lock 的锁文件)。

在我添加的舞台服务器的 capistrano 部署配置中

set :default_env, {
    'COMPOSER' => 'composer-dev.json'
}

我可以像这样在本地机器上define the environmental variable on the fly

$ COMPOSER=composer-dev.json composer update

它会生成 composer-dev.lock 文件,然后我可以将其部署到登台服务器。

当然,我可以在登台服务器上配置环境,只是在我的 capistrano 配置中这样做似乎更容易。

【讨论】:

  • 您好,我对 Web 开发和部署非常陌生,是否可以提供有关从环境变量控制不同 composer.json 文件的资源?我只是在做一个很小的测试任务,我想部署它,我需要一个非常不同的作曲家文件,所以学习 capistrano 或 phing 似乎很困难
  • 这正是我想要的。你救了我的一天,理查德!祝你有美好的一天!
猜你喜欢
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 2020-10-15
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 2011-10-09
  • 2017-08-20
相关资源
最近更新 更多