【发布时间】:2014-03-10 09:33:52
【问题描述】:
Composer 可以选择仅在开发时加载多个依赖项,因此这些工具不会安装在生产环境中(在实时服务器上)。这(理论上)对于仅在开发中才有意义的脚本非常方便,例如测试、假数据工具、调试器等。
要走的路是用你在开发中需要的工具添加一个额外的require-dev 块:
"require-dev": {
"codeception/codeception": "1.6.0.3"
}
然后(理论上)通过
加载这些依赖项composer install --dev
问题和疑问:
Composer 在 2013 年显着改变了 install 和 update 的行为,现在默认安装 require-dev-dependencies (!),随意创建带有 require-dev 块的 composer.json 并执行composer install 进行复制。
由于最常见的部署方式是推送 composer.lock(保存您当前的 composer 设置),然后在生产服务器上执行composer install,这也将安装开发东西。
在不安装 -dev 依赖项的情况下部署此 的正确方法是什么?
注意:我试图在这里创建一个规范的 Q/A 来澄清奇怪的 Composer 部署。随意编辑这个问题。
【问题讨论】:
-
@all: 不知道赏金在哪里 :( 我将开始另一种方法。
-
如果您不积极奖励它,并且没有答案被接受或获得足够的支持,那么没有人会获得赏金。
-
我个人完全不喜欢这种方法。
composer.lock永远不应该添加到 Git 存储库中,永远不要。正确的方法是在暂存时使用 composer update 然后将文件同步到生产中(当然,如果一切正常的话)。登台必须是生产环境的精确副本。composer.lock应该是.gitignore的一部分。 -
composer.lock 肯定会包含在您的 CSV 中!!!您还如何确保每个人都使用相同的版本?所以永远不要从你的 CSV 中排除 composer.lock !!!
-
@TobiasGaertner 我认为您的意思是 VCS(版本控制软件),否则您是正确的并且符合 the project's official recommendations。
标签: php deployment composer-php