我已经创建了两个git仓库,我们需要使用PHP的composer将它们安装到我们的一个Web应用程序中。每个仓库有两个分支,分别为master和dev-master。
在我想要安装的项目中,我创建了以下composer.json包配置:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "proprietary",
"repositories": [
{
"type": "package",
"package": {
"name": "impression-works/pdf-generator",
"version": "dev-master",
"source": {
"url": "git@github.com:...",
"type": "git",
"reference": "dev-master"
}
}
},
{
"type": "package",
"package": {
"name": "impression-works/psd-templates",
"version": "dev-master",
"source": {
"url": "git@github.com:...",
"type": "git",
"reference": "dev-master"
}
}
}
],
"require": {
// ...
"impression-works/psd-templates": "dev-master",
"impression-works/pdf-generator": "dev-master"
},
"autoload": {
// ...
"psr-0": {
"ImpressionWorks\\PsdTemplates": "vendor/impression-works/psd-templates/src",
"ImpressionWorks\\PdfGenerator": "vendor/impression-works/pdf-generator/src"
}
},
// ...
"config": {
"preferred-install": "dist"
},
"minimum-stability": "stable"
}
当我最初运行composer update或composer install时,impression-works包安装得很好,但是,如果我对这些存储库进行更改,并将其推送到dev-master,则任何对composer update的连续调用都只是报告:
Nothing to install or update
我如何强制composer更新到我们这两个自定义包的最新提交?
7条答案
按热度按时间8mmmxcuj1#
我每周都会在谷歌上搜索这个页面好几次,结果发现它并没有回答我的问题。那就这样吧
我使用的是packagist.org,而不是VCS。我不想使用VCS,因为它会使Composer更慢,而且它已经慢得令人痛苦了。
考虑以下场景。早期开发中的应用程序依赖于我正在构建的一个包。这个包在dev中也是早期的,所以dev-master作为版本,每次都能获得最新的master。
我修复了包中的一个关键错误,提交并推送它,在www.example.com中混搭更新按钮packagist.org,然后运行
composer update
,绝对没有任何React。此时,您可以尝试清除该高速缓存。没用的
在某个时间点,您会偶然发现this open issue from 2012。在此之后,您将发现安装最新版本的唯一方法是在require中使用提交散列。
composer require vendor/package dev-master#0d7d6c88
这需要您手动获取提交哈希并将版本更新为
composer.json
,然后再次运行composer update
。不完全是你所期望的依赖管理器。看起来这个问题永远不会消失,所以除非有人写了一个更好的Composer,否则我们就会陷入这种行为。另一种方法是使用Composer标记您想要下载的每一个提交。小心混淆的最小稳定性规则和错误,Composer默认抛出。
qzlgjiam2#
您应该使用VCS类型的自定义存储库。您使用的包存储库有一些限制,如文档中所强调的:
z18hc3ub3#
我也有同样的问题。解决这个问题后,解决方案相当简单:清理该高速缓存。
约瑟夫和克里斯蒂安所寻找的东西可以用这两行来实现:
为我加载最后一个存储库主。希望对下一篇文章有所帮助,阅读这篇文章。
重要提示:
你必须等待GitHub服务钩子启动并更新www.example.com上的composer包packagist.org或者在网站上手动使用“更新”按钮。
这不是几秒钟的事。。您必须等待一段时间(通常为1到5分钟),给予打包人员有机会分发更改。
因此,为了持续、快速地开发,我只需要手动执行
cd vendor/base/package
和git update
。并不时尝试上述clearcache
和upgrade
。vkc1a9a24#
一个比@Bitclaw的答案更简单的版本,对我来说,下面的工作完美无瑕:
kmb7vmvb5#
在安装软件包之前,您需要清除该高速缓存
composer clearcache
。如果已经安装了软件包,则必须将其删除。只有在此之后,清除该高速缓存并再次安装软件包。
f0ofjuux6#
运行composer upgrade有点危险,因为它可能会更新您拥有的所有其他依赖项。在这种情况下,我将运行以下命令:
8yoxcaq77#
试试这个