我对作曲家有意见。我在本地环境中使用git。我是唯一一个开发者。
当我需要更多的依赖项(或者需要更改某些版本)时,我编辑composer.json并在本地运行作曲家安装
。
一切都很好。
然后,当一切在本地工作时,我提交我的更改(包括composer.json和composer.lock),并推动我的正式服。
接收后脚本更新源,并在远程服务器上运行编写器安装
。
预期:
发生了什么:
警告:锁文件不是最新的composer.json.您可能会得到过时的依赖项。运行更新以更新它们。
以下是post receive composer部分的输出:
composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
- Removing guzzle/guzzle (v3.9.3)
- Removing symfony/event-dispatcher (v2.7.1)
- Removing geoip/geoip (v1.15)
- Removing pimple/pimple (v3.0.0)
- Removing cocur/slugify (1.1.x-dev)
- Removing bentools/url (0.2)
- Removing bentools/simplexmlextended (1.2.0)
Generating autoload files
我做错了什么?
谢谢,本
这一警告
警告:锁文件不是最新的composer.json中的最新更改,您可能会得到过时的依赖项,运行更新来更新它们。
当编写器的md5sum。json与存储在
编写器中的json不同。锁
:
{
"hash": "b15ed9405e8547867f74973ce8add172",
"packages": [ ... ]
}
确保您的composer.json
和composer.lock
与本地的相同(比较它们的md5和)。我怀疑您的部署链中的某些东西没有正确更新它们。
请确保您在本地添加了依赖关系,使用要求
命令:
composer require new/package ~2.5
或者如果编写器。已手动编辑json
,至少运行一次
composer update new/package
之后,对于每个额外添加的包,确保它正确地添加到您的composer.lock
。
另一种方法:
在生产中运行编写器更新--lock
。这将更新锁定文件中的哈希,但不会升级供应商。
然后运行composer install
从您的comoser安装供应商。锁定
。
当我需要更多的依赖项(或者需要更改某些版本)时,我会编辑composer.json并在本地运行作曲家安装。
那是错误的。您可以编辑composer。json
,然后必须运行composer update
,或者让composer对json文件进行内部编辑,然后只运行composer require new/package
(可选版本)。
无论哪种方式,您都应该使用一个更改的编写器。json
和编写器。锁定
文件,将这两个文件都提交到存储库中,预期结果是锁定文件将包含正确版本的所有软件包,这些软件包应通过定期的composer安装
运行安装到生产环境中。
请注意,您的工作流仍然非常危险。如果你推,Github就坏了,你怎么才能安装ZIP呢?