php - 您是否必须在本地主机和生产环境中运行 Composer?

标签 php git composer-php

我是 Composer (getcomposer.org) 的新手,如果我使用 Composer 在本地安装一个包,然后使用 Git 将我的代码库推送到我的生产服务器,我不确定它是如何工作的。我是否必须在生产服务器上再次运行 Composer?

干杯, J

最佳答案

设置项目时,将依赖项添加到本地项目目录中的 composer.json 文件中。

完成此操作后,您将需要运行 composer update。您也可以运行 composer install,但是,如果没有 composer.lock 文件,composer install 实际上会运行 composer update。

Composer update 出去并解析所有你正在使用的库的所有依赖项,将它们下载到/vendor 目录,创建一个自动加载器脚本并生成 composer.lock 文件。

对于您的项目,您要做的是对您的 composer.json 和您的 composer.lock 文件进行版本控制。

在您的生产服务器上,您将始终运行 composer install,这可确保您生产服务器上的库与您在开发过程中使用的库完全相同。

composer install 也快了很多,因为它不需要做所有的依赖管理工作,而且几乎总是可以 pull 一个特定的提交#。它不必查看版本字符串。因此,一旦服务器已经通过它一次,它通常非常快。

在开发中,你唯一应该运行 composer update 的时候是当你引入一个新的库或者你有一个问题,底层库已经被更改并且你知道你需要让 composer 出去并重新计算依赖关系. composer update 总是重新计算并下载任何可用库的最新版本,即使版本级别没有改变。这意味着某些东西有可能被破坏,因此需要尽可能完整地进行一组回归测试。简而言之,与您实际更改的内容无关的内容可能已经损坏,因此您只想在被迫时引入更改的可能性。

当然,如果你确实引入了一个新的库,你别无选择,只能运行 composer update。

一旦您运行 composer update,您的 composer.lock 文件将被更新(如预期的那样)并且当您在其上运行 composer install 时,生产服务器将选择它。

正如其他人所说,将供应商放在您的 gitignore 中。关键是这些是您依赖的外部库,但不属于您的项目,不应进行版本控制。在过去,有些人使用 git 子模块,这是一个你真的想避免的大 PITA,更不用说子模块不解决你包含的库的依赖关系。

关于php - 您是否必须在本地主机和生产环境中运行 Composer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22104102/

相关文章:

php - SHA1 与 md5 与 SHA256 : which to use for a PHP login?

php - mysql查询优化左连接

git - 最适合在版本控制中包含或忽略 vQmod 文件

laravel - Composer 安装失败 - jimmyjs/laravel-report-generator

php - php composer无法在public_html文件夹中访问

php - 想要备份 PHP 中的代码,其中要作为备份的文件是从另一个指定的(补丁)文件夹中读取的。?

php - 如何在 PHP 中将数组插入数组中的数组

git - Hudson(Jenkins) 和远程 git 存储库获得权限被拒绝

git - 我可以使用 git-svn 的交互式代理身份验证吗?

php - Laravel 6 : FatalThrowableError: Class 'GuzzleHttp\Client' not found in TransportManager. PHP