我已经创建了两个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更新到我们的这两个自定义包的最新提交?
我每周都会通过谷歌搜索多次访问这个页面,结果发现它并没有回答我的问题。这就来了。
我用的是packagist.org不是VCS我不想使用VCS,因为它使Composer更加缓慢,而且它已经非常缓慢了。
考虑下面的场景。早期开发中的应用程序依赖于我正在构建的包。该包也在dev的早期,因此dev master作为版本每次都可以获得最新的master。
我修复了包中的一个关键bug,commit
$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Writing lock file
Generating autoload files
此时,您可以尝试清除缓存。这没用。
在某个时间点,你会偶然发现这个2012年的公开问题。之后,您将发现安装最新版本的唯一方法是在require中使用commit散列。
composer需要供应商/软件包开发主机#0d7d6c88
这需要您手动获取提交哈希并将版本更新为composer.json
,然后再次运行作曲家更新
。不完全是您对依赖项管理器的期望。看起来这个问题永远不会消失,所以除非有人写了一个更好的作曲家,否则我们会坚持这种行为。
另一种选择是使用Composer标记您想要下载的每一个提交。小心混乱的最小稳定性规则
您应该使用VCS类型的自定义存储库。您使用的包回购有一些文档中强调的限制:
我只是有同样的问题。弄清楚之后,解决方法相当简单:清理缓存。
约瑟夫和克里斯蒂安正在寻找的东西可以用这两行来完成:
composer clearcache
composer upgrade
为我加载最后一个存储库主机。希望它能帮助下一个,阅读这篇文章。
重要提示:
您必须等待GitHub服务钩子启动并更新PackageGist上的composer包。在网站上手动组织或使用“更新”按钮。
这不是几秒钟的事。。。您必须等待一段时间(通常为一到五分钟)才能让PackageGist有机会分发更改。
因此,为了持续快速的开发,我只需手动cd供应商/base/包
和git更新
。并且时不时的尝试上面的clearcache
和升级
。