我有多个开发环境,其中一个在本地包含我的软件包的源代码,而另一个则没有。我想分别配置我的环境,但是我也想让作曲家知道它在存在时应该使用我的本地软件包,并使用packagist版本作为后备。
我试图在网上寻找这种东西,但找不到直接答案。我已经知道如何要求本地软件包,但是我不知道如何可选要求本地软件包。
只需重申一下,我想像这样要求我的包裹:
"require": {
"php": "^7.1.3",
/* ... */
"my-namespace/my-package": "dev-master",
},
并且能够以某种方式列出此软件包,因为有时在本地可用。如果我这样做:
"repositories": [
{
"type": "path",
"url": "./path/to/my/package"
},
]
我可以将其设置为本地必需,但这意味着在我的其他开发环境中(该软件包在本地不存在,也不希望它存在),composer将无法要求我的软件包。
说完这句话后,我希望我的本地环境(一个本地托管我的软件包的环境)需要该软件包的本地版本,并且我希望我的另一个环境(一个本地没有我的软件包的环境)托管)以要求该软件包的包装版本。
有什么想法吗?
答案 0 :(得分:0)
我认为您不希望“有选择地要求”,因为包装是必不可少的。您希望始终包含它,但是只有在本地不可用时才下载它。
本文介绍了该过程:https://johannespichler.com/developing-composer-packages-locally/
简而言之:您在应用程序中添加了一个指向本地库存储库的“存储库”条目:
"repositories": {
"dev-package": {
"type": "path",
"url": "relative/or/absolute/path/to/my/dev-package",
"options": {
"symlink": true
}
}
}
“ URL”指向您本地lib存储库的路径。 options.symlink很重要,否则Composer将复制该回购而不是对其进行符号链接(迫使您不断更新该副本而不是自动获取所有更改)。
在其他计算机上,路径指向无处,Composer不会在此处检测到lib,而是搜索其他源,可能是从回购服务器下载了它。