用于生产和登台/开发的不同composer.json文件

时间:2016-01-15 08:48:19

标签: git composer-php

情景:

我有一个现有的实时网站,通过dev-master上的几个GIT存储库加载作曲家依赖关系。

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

我通常通过capistrano部署内容(并不是说我认为它有任何不同)。

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

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

我该如何做到这一点?

1 个答案:

答案 0 :(得分:8)

解决方案是使用环境变量。

我有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配置中看起来更容易。